为什么lua解释器中的-l选项行为异常?

问题描述 投票:4回答:1

您可以通过将所有块作为参数执行一系列块带有-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”?任何意见,不胜感激。

lua
1个回答
0
投票

错误是因为您正在文件a = 1中使用a.lua,而不像在示例中a.lua包含x = 1b.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

Egor Skriptunoff's Comment on this question

© www.soinside.com 2019 - 2024. All rights reserved.