Lua 交互界面和脚本语法规则有何不同?

我很少使用 Lua,因此这可能是一个微不足道的问题,但我刚刚注意到,在交互式 REPL 中使用 Lua 5.3.2 时,我可以写出例如:

> 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 中可以做些什么而在脚本中不能做些什么?

点赞
用户107090
用户107090

Lua REPL 尝试将输入作为表达式进行评估。如果成功,则输出结果。这仅是为方便而设计的。

(*) 它通过在输入前面添加return并尝试将其作为脚本运行来实现。

2019-04-06 18:15:04