REPL 和脚本之间的 Lua 语法规则有何不同?
How do Lua syntax rules differ between REPL and scripts?
我很少使用 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 中可以做什么而在脚本中不能做什么,是否有一些通用规则?
Lua REPL 尝试将输入计算为表达式。(*) 如果成功,它会打印结果。这只是为了方便。
(*) 它通过在输入前添加 return
并尝试 运行 作为脚本来做到这一点。
我很少使用 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 中可以做什么而在脚本中不能做什么,是否有一些通用规则?
Lua REPL 尝试将输入计算为表达式。(*) 如果成功,它会打印结果。这只是为了方便。
(*) 它通过在输入前添加 return
并尝试 运行 作为脚本来做到这一点。