Читая страницы Программирование на Lua, я экспериментировал на консоли Lua 5.3. В 3.3 - логические операторы , я прочитал (и попробовал), что not 0
оценивается как false
- для меня, программиста на C / C ++, это шокирует. Для практики я написал функцию, которая проверяет, отличается ли данное число от 0
:
Lua> function nn(x) return x <> 0 end
Несмотря на поддельный оператор, [1] функция сделала именно то, что и предполагалось to:
Lua> nn(1)
true
Lua> nn(0)
false
Lua> nn(0.0)
false
Lua> nn(0.5)
true
Lua> nn(-1)
true
Когда я понял, что фактическим оператором является ~=
, я удивился, почему не получил сообщение об ошибке. Поэтому я предположил, что версия 5.3 (с которой я экспериментирую) могла бы ввести псевдоним для ~=
, но я вижу, что это не так в справочнике Lua 5.3, 3.4.4 - Реляционные операторы .
Может ли кто-нибудь пролить свет на то, что на самом деле здесь происходит?
[1] У меня явно было безошибочное ощущение, что оператор <>
известный из SQL, Basi c или Pascal идеально подходит для Lua;)