Lua - 将属性加载到表中

我想加载一个包含全局变量的config.lua文件,以便将这些变量包装并访问到一个本地表中。

config.lua文件如下所示:

prop01=value01
prop02=value02

script.lua文件应如下所示:

-- 片段开始 --
local config = {
   -- 在这里填写一些内容
}
-- 片段结束 --

print (config.prop01) -- 应该输出“value01”
print (config.prop02) -- 应该输出“value02”

我该如何更改“片段”以获得预期的输出?

点赞
用户4687565
用户4687565

交换加载配置文件时的环境。

在 Lua 5.3 中,可以使用函数 loadloadfile(详见此处)完成:

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 是一个有效脚本,能够设置一些全局变量的情况下。

2018-11-24 15:35:45