- Euphoria Tutorial
- Euphoria - Home
- Euphoria - Overview
- Euphoria - Environment
- Euphoria - Basic Syntax
- Euphoria - Variables
- Euphoria - Constants
- Euphoria - Data Types
- Euphoria - Operators
- Euphoria - Branching
- Euphoria - Loop Types
- Euphoria - Flow Control
- Euphoria - Short Circuit
- Euphoria - Sequences
- Euphoria - Date & Time
- Euphoria - Procedures
- Euphoria - Functions
- Euphoria - Files I/O
- Euphoria Useful Resources
- Euphoria - Quick Guide
- Euphoria - Library Routines
- Euphoria - Useful Resources
- Euphoria - Discussion
Euphoria - 短路评估
当使用and或or运算符通过if、elsif、until或测试条件时,将使用短路评估。例如 -
if a < 0 and b > 0 then -- block of code end if
如果 a < 0 为 false,则 Euphoria 不会费心去测试 b 是否大于 0。它知道无论如何总体结果都是 false。同样 -
if a < 0 or b > 0 then -- block of code end if
如果 a < 0 为 true,则 Euphoria 立即判定结果为 true,而不测试 b 的值,因为此测试的结果是无关紧要的。
一般来说,每当您出现以下形式的情况时 -
A and B
其中 A 和 B 可以是任意两个表达式,当 A 为假时,Euphoria 会采取捷径,立即使整体结果为假,甚至不看表达式 B。
同样,每当您有以下形式的条件时 -
A or B
当 A 为 true 时,Euphoria 会跳过表达式 B 的求值,并声明结果为 true。
and 和 or 的短路计算仅针对 if、elsif、until 和 while 条件进行。它不用于其他上下文。例如 -
x = 1 or {1,2,3,4,5} -- x should be set to {1,1,1,1,1}
如果这里使用短路,则将 x 设置为 1,甚至不查看 {1,2,3,4,5},这是错误的。
因此,短路可以用在 if、elsif、until 或 while 条件中,因为您只需要关心结果是 true 还是 false,并且需要条件来产生一个Atomics作为结果。