недокументированный оператор неравенства <> в lua? - PullRequest
0 голосов
/ 17 апреля 2020

Читая страницы Программирование на 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;)

1 Ответ

0 голосов
/ 17 апреля 2020

Кажется, это ошибка в моей консоли Lua 5.3. Когда я пробую то же самое

function nn(x) return x <> 0 end

nn(0)
nn(0.1)
nn(0.0)
nn(10)
nn(-10)

в ideone (работает Lua (luac 5.3.3) ), я получаю этот синтаксис ошибка:

luac5.3: прог. lua: 1: неожиданный символ рядом с '>'

Так же, как я получаю в Lua live демо (Lua 5.3.5 Авторское право (C) 1994-2018 Lua .org, PU C -Rio )

ввод: 1: неожиданный символ рядом с '>'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...