Я редко использую Lua, так что это может показаться тривиальным вопросом, но я только что заметил, что с Lua 5.3.2 в интерактивном REPL я могу написать, например:
> 1 == 2 or error('numbers not equal')
Именно так я бы выполнял обработку ошибок в Bash или Perl (или, конечно, оператор слева от or
был бы чем-то более полезным в реальном коде, например, двумя переменными).
Но если я вставлю 1 == 2 or error('numbers not equal')
в какой-нибудь файл foo.lua
, а затем выполню lua foo.lua
, получится lua: foo.lua:1: unexpected symbol near '1'
.
Я могу согласиться с тем, что это недопустимый синтаксис, но я нахожу очень странным, что REPL, тем не менее, принимает это утверждение. Может кто-нибудь объяснить, что здесь происходит? Существуют ли какие-то общие правила относительно того, что я могу делать в REPL, чего я не могу делать в скрипте?