2.5.2 – Операции сравнения
Операции сравнения в Lua:
== ~= < > <= >=
Эти операции всегда возвращают false или true.
Сравнение на равенство (==)
сначала сравнивает типы операндов. Если типы различны, то результатом будет false. Иначе сравниваются
значения операндов. Числа и строки сравниваются обычным способом. Объекты (таблицы,
пользовательские данные, потоки и функции) сравниваются по ссылке: два объекта
считаются равными, только если они являются одним и тем же объектом. Создаваемый
объект (таблица, пользовательские данные, поток или функция) не может быть
равен ни одному из уже существующих.
Вы можете изменить способ, которым Lua сравнивает таблицы и пользовательские
данные, используя метаметод "eq(§2.8).
Правила преобразования из §2.2.1 НЕ работают в
сравнениях на равенство. Например, "0"==0
вернет false, а t[0] и t["0"] обозначают различные
записи в таблице.
Оператор ~= прямо
противоположен оператору равенства (==).
Операторы сравнения на больше-меньше работают следующим образом. Если оба
параметра - числа, то они сравниваются как обычно. Если оба параметра строки,
то их значения сравниваются в соответствии с лексикографическим порядком. Во
всех остальных ситуациях будет вызван метаметод "lt" или "le" (§2.8).
|