Как правила синтаксиса Lua отличаются между REPL и сценариями? - PullRequest
1 голос
/ 06 апреля 2019

Я редко использую 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, что я не могу сделать в сценарии?

1 Ответ

1 голос
/ 06 апреля 2019

Lua REPL пытается оценить входные данные как выражения. (*) В случае успеха он печатает результаты.Это только для удобства.

(*) Он делает это, добавляя return к входу и пытаясь запустить его как скрипт.

...