Ленивое вычисление
Рассмотрим поближе совокупную таблицу операторов and и or:
a | b | a | a |
---|---|---|---|
true | true | true | |
true | false | false | true |
false | true | false | true |
false | false | false |
Как видите, вне зависимости от второго аргумента результат не меняется. Посему интерпретатор в таких случаях не считает второе выражение. В этом легко убедиться передав вторым выражением функцию:
Минутка рукожопости
В любом другом языке программирования выполнив эквивалент false and true or true
вы получите true
или его числовое представление в виде 1
. Но выполнив такой код в игре вы сильно удивитесь и можете заподозрить автора сей статьи во всяком.
Разгадка сего действия проста - если первым аргументом функции and
был передан false
то игра перестаёт считать выражение и экстренно возвращает false
.
Исправить это можно с помощью скобок: