我很少使用Lua,所以这可能是一个琐碎的问题,但是我刚刚注意到,在Lua 5.3.2中,我可以在交互式REPL中编写例如:
CXX = g++
CXXFLAGS = -Wall -pedantic -std=c++17 -g
Saw: main.o saw.o
${CXX} ${CXXFLAGS} -o $@ $^
main.o: saw.hpp
saw.o: saw.hpp
这是我在Bash或Perl中执行错误处理的方式(或者,> 1 == 2 or error('numbers not equal')
左侧的语句在实际代码中会更有用,例如两个变量)。
但是如果我将or
粘贴到某个文件1 == 2 or error('numbers not equal')
中,然后执行foo.lua
,则会得到lua foo.lua
。
我可以接受这是无效的语法,但是我感到非常奇怪的是REPL仍然接受该语句。有人可以解释这里发生了什么吗?关于我在脚本中无法完成的在REPL中可以做什么的一些一般规则吗?
答案 0 :(得分:1)
Lua REPL尝试将输入评估为表达式。(*)如果成功,则打印结果。这只是为了方便。
(*)通过在输入之前添加return
并尝试将其作为脚本运行来实现。