【发布时间】:2020-03-02 02:58:25
【问题描述】:
您可以通过将它们全部作为参数来执行一系列块 到独立解释器,使用 -l 选项。例如,如果 你有一个带有单个语句 x=1 的文件 a 和另一个带有 语句 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”? 非常感谢任何 cmets。
【问题讨论】:
-
好问题!选项
-lxx不仅会执行xx.lua,还会创建全局变量xx(与文件同名)并将块返回的值赋给这个变量。如果没有返回值,则使用值true。 -
尝试
$ lua -i -e 'require"a";require"b"'避免覆盖变量a -
@EgorSkriptunoff 发布答案。其他人这样做会很奇怪(或尴尬!)。
标签: lua