3

我使用 Lua 作为配置语言。众所周知,配置应该有系统范围的和用户的。

我刚刚发现 Lua 会保留原始值而不是覆盖它们。

例如,这是第一个源文件,

-- a.lua
var=1

和第二个源文件

-- b.lua
var=2

结果如下:

> lua-5.1 
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> dofile ("a.lua")
> dofile ("b.lua")
> print(var)
1

是的。var未被覆盖。这会使用户自己的配置不起作用。任何人都知道如何让 Lua 概览默认具有相同变量名的变量?非常感谢。(上面的来源只是例如,实际上我正在使用 Lua 和 C)

PS:我再次检查了上面的测试并且它有效。请参阅尼科尔回答下的评论。

4

2 回答 2

3

通常的做法是有一个table系统参数和一个table用户参数。例如,

a.lua

sys = { var = 1; a = 3 }

b.lua

usr = { a = 5; b = 7 }

配置管理器会

setmetatable(usr,{__index = sys})

测试:

> =usr.a
5
> =usr.var
1
> =usr.b
7
> 
于 2012-08-25T02:31:12.460 回答
1

我试图重现您的错误,但它完全按照您的预期工作。因此,如果你得到了这个,那几乎可以肯定是你在某处你没有提到的地方做的事情。您确定这些文件包含您所说的内容吗?

于 2012-08-25T10:28:05.313 回答