Учебники

Эйфория — оценка короткого замыкания

Когда условие проверяется, если, elsif, до или во время использования и / или операторов, используется оценка короткого замыкания. Например —

if a < 0 and b > 0 then
   -- block of code
end if

Если a <0 является ложным, то Euphoria не потрудится проверить, больше ли b, чем 0. Он знает, что общий результат равен false независимо. Точно так же —

if a < 0 or b > 0 then
   -- block of code
end if

если a <0 истинно, то Euphoria немедленно решает, что результат истинен, без проверки значения b, поскольку результат этого теста не имеет значения.

В общем, всякий раз, когда у вас есть условие следующей формы —

A and B

Если A и B могут быть любыми двумя выражениями, Euphoria сокращает время, когда A ложно, и сразу же делает общий результат ложным, даже не глядя на выражение B.

Точно так же, когда у вас есть условие следующей формы —

A or  B

Если A истинно, Euphoria пропускает оценку выражения B и объявляет результат верным.

Оценка короткого замыкания и и или выполняется только для условий if, elsif, before и 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, before или while, потому что вам нужно заботиться только о том, является ли результат истинным или ложным, и условия, необходимые для получения атома в результате.