已经确定的 Lua 是否有不同的解释器?

我下载了一个名叫 SciTE 的 IDE,里面包含 "LuaForWindows_v5.1.4-46.exe"。 但当我尝试执行

print(a)

a 没有被赋值。当我使用 SciTE 交互式 Lua 时,输出是 "variable 'qqqqqq' is not declared"。 如果我在 Cmd 中使用命令

lua -e "print(aaaa)"

输出将会是 "nil",就像我在书中看到的一样。

谁知道为什么不同,是因为 Lua 有不同的解释器吗?

点赞
用户6892231
用户6892231

它是相同的解释器。Lua 像 C++ 一样允许“函数重载”;Scite IDE 在交互式会话期间重载打印函数,以提供更易读的调试信息(这是 Scite 程序作者的个人设计决策)。本地 Lua 解释器打印函数将输出未声明变量的 nil。当您在 Scite 中运行 Lua 脚本时,Scite 将确保您的脚本在所有方面上看到纯 Lua 解释器的行为。一般而言,像 Scite 这样的 Lua IDE,你会发现它们都试图添加一些小的辅助功能,从代码补全到查找缺失的“end”语句等等。但可以放心,当你点击运行按钮时,IDE 将确保你的脚本看到的只有 lua.org 发布的解释器。

2017-05-05 06:00:45