如何在Lua中包含变量的配置文件

如何在Lua中包含变量的配置文件,lua,Lua,在我的lua脚本中,有一些变量我想放在“settings.conf”文件中,这样我就可以轻松地更改变量,而无需深入代码。 在其他语言中,它们使用“include”,但在Lua中似乎有所不同,因为它加载了一个。我只需要加载一些参数的配置文件。 我应该使用哪个命令执行此操作?您可以执行以下操作: config.lua: myconf = { param1 = "qwe"; param2 = 7; } 主程序: package.path = '*.lua;' .. package.p

在我的lua脚本中,有一些变量我想放在“settings.conf”文件中,这样我就可以轻松地更改变量,而无需深入代码。
在其他语言中,它们使用“include”,但在Lua中似乎有所不同,因为它加载了一个。我只需要加载一些参数的配置文件。

我应该使用哪个命令执行此操作?

您可以执行以下操作:

config.lua:

myconf = {
    param1 = "qwe";
    param2 = 7;
}
主程序:

package.path = '*.lua;' .. package.path
require "config"
print("config param1 = " .. myconf.param1 .. "\n")

这在大多数情况下都能很好地工作。

从另一个脚本执行Lua脚本的最简单方法是使用,它采用文件的路径:

dofile"myconfig.lua"

dofile "/usr/share/myapp/config.lua"
dofile的问题在于它可能引发错误并中止调用脚本。如果要处理错误,例如文件不存在、语法或执行错误,请使用
pcall

local ok,e = pcall(dofile,"myconfig.lua")
if not ok then
  -- handle error; e has the error message
end
如果需要更精细的控制,请使用
loadfile
,然后进行函数调用:

local f,e = loadfile("myconfig.lua")
if f==nil then
  -- handle error; e has the error message
end
local ok,e = pcall(f)
if not ok then
  -- handle error; e has the error message
end

除非您想将新配置写入文件。@hjpotter92,您的意思是如果我覆盖此文件,配置将不会更新吗?我为我的困惑道歉,但我不完全理解你的陈述。最终你的解决方案更好。我在使用其他解决方案时遇到了一些奇怪的问题。