您可以通过将所有块作为参数执行一系列块带有-l选项的独立解释器。例如,如果您有一个带有单个语句x = 1的文件a和另一个带有b的文件b语句print(x),命令行
prompt> lua -la -lb
将在a中运行该块,然后在b中运行一个,这将打印出预期1。
以上来自以下链接:https://www.lua.org/pil/1.1.html。但是,当我尝试时,出现语法错误。
因此,在文件a.lua中,我只有一行,即a=1
。然后在文件b.lua中,我也只有一行print("the value of a is:",a)
。然后,
:~$ lua -i -la -lb
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
the value of a is: true
>
:~$
:~$ lua -la -lb
the value of a is: true
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
>
为什么打印出“ a的值是:true”?而不是“ a的值是:1”?任何意见,不胜感激。
错误是因为您正在文件a = 1
中使用a.lua
,而不像在示例中a.lua
包含x = 1
,b.lua
包含print(x)
。
使用a
而不是x
意味着您使用a
完成时要写入的相同-la
变量,将其更改为true
。
之所以会这样,是因为选项-l name
等于name = require("name")
。当对未返回任何结果的文件完成需求时,需求将返回true
。
您的命令lua -la -lb
看起来像这样:
a = require("a") --this returning true after it completes
b = require("b") --this printing the value of `a` which will always be `true`
来源:
Similar question answered on Lua-Users: command-line -l option issue