Справочное руководство по языку 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).