我正在使用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:我再次检查了上面的测试,但它确实有效。请在Nicol的回答中看到评论。
答案 0 :(得分: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
>
答案 1 :(得分:1)
我尝试重现您的错误,但它的工作方式完全符合您的预期。因此,如果你得到这个,那几乎可以肯定你正在做某件你没有提到的事情。你确定那些文件包含你说的吗?