Ленивое вычисление
Рассмотрим поближе совокупную таблицу операторов 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.
Исправить это можно с помощью скобок: