Программирование на Lua | ||
Часть I. язык Глава 3. Выражения |
< > <= >= == ~=Все эти оператры всегда возвращают либо true, либо false.
Операторr ==
проверяет эквивалентность, а оператор ~=
- неэквивалентность. Оба оператора можно применять к любым двум значениям. Если значения различных типов, Lua считает, что значения различны. В противном случае, Lua сравнивает их сообразно их типу. В частности, nil эквивалентен лишь самому себе.
Lua сравнивает таблицы, userdata и функции по ссылкам, т.е. два таких значения считаются эквивалентными только в том случае, если указывают на один и тот же объект. Например, в результате выполнения
a = {}; a.x = 1; a.y = 0 b = {}; b.x = 1; b.y = 0 c = aполучится, что
a==c
, но a~=b
.
Все операторы можно применять только к двум числам или к двум строкам. Числа Lua сравнивает обычным порядком. Строки сравниваются в алфавитном порядке, который зависит от установленной для Lua локали. Например, в случае локали European Latin-1, получится "acai" < "açaí" < "acorde"
. Другие типы данных могут сравниваться только на эквивалентность (и неэквивалентность).
Когда сравниваются значения различных типов, необходимо проявлять осторожность: Помните, что результатом "0"==0
будет false. Более того, 2<15
естественно true, но "2"<"15"
будет false (алфавитный порядок!). Чтобы избежать противоречивых (а то и несовместимых) результатов, Lua выдаст ошибку при попытке сравнить число и строку (типа 2<"15"
).
Copyright © 2003-2004 Roberto Ierusalimschy. All rights reserved. | Перевод на русский Artem13 |