我想加载一个包含全局变量的config.lua文件,以便可以包装然后将这些变量访问到本地表中。
config.lua看起来像这样:
prop01=value01
prop02=value02
script.lua看起来像这样
-- fragment starts --
local config = {
-- something goes here
}
-- fragment end --
print (config.prop01) -- should print "value01"
print (config.prop02) -- should print "value02"
如何更改“片段”以获得预期的打印输出?
答案 0 :(得分:1)
在加载配置文件时交换环境。
在lua 5.3中,它是通过here中记录的功能load
或loadfile
完成的:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file",config)
config_init_fun()
在lua 5.1中,您将需要使用setfenv
函数:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file")
config_init_fun = setfenv (config_init_fun, config)
config_init_fun()
可能不需要分配setfenv结果,但我手头没有lua5.1进行验证。
所有假设config.lua是有效的脚本都在设置一些全局变量。