首页 > 解决方案 > Lua - 将属性加载到表中

问题描述

我想加载一个包含全局变量的 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"

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

标签: propertieslua

解决方案


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

在 lua 5.3 中,它是使用函数完成的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 是一个设置一些全局变量的有效脚本。


推荐阅读