Справочное руководство по языку Lua 5.1 :: 2.5.2 - Получение длины



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).