首先,让我解释一下我的设置。我有2个lua文件:一个是要运行的主程序,另一个是配置文件。在主程序中,它运行一次配置文件并将所有表加载到内存中。如果我想添加新配置,我不想重新编程主程序,我希望能够在配置文件中添加新表。
主程序:
-- Read config
dofile("config.lua")
-- Ask for ID
inputtedID = io.read()
-- Check if it exists
if string.format("%s[enabled]", inputtedID) then
-- If table exists and enabled key is set to true
print('"' .. inputtedID .. '" does exist!')
else
-- If the table doesn't exist or the key is false
print('"' .. inputtedID .. '" does not exist')
end
配置文件:
Public = {
enabled = true,
directory = "whatever"
}
Snapshot = {
enabled = true,
directory = "something"
}
-- So forth and so on
每个表都有相同的键要读取,但我们需要关注的是enabled
键。这就把我们带到了......
我希望它获取用户输入,检查是否有与用户输入匹配的表,并检查该表中的enabled
键值是否为true
。如果表不存在或值为false,则只需运行一组要求重试的不同代码。
具体而言,只要我在引用或使用表格时尝试使用变量,我就会陷入困境。我不知道怎么做,也不知道应该怎么做。
答案 0 :(得分:2)
所有全局变量都是全局表的成员,称为_G
,然后您可以使用变量名称对其进行索引:
-- Read config
dofile("config.lua")
-- Ask for ID
inputtedID = io.read()
-- Check if it exists
if _G[inputtedID] and _G[inputtedID].enabled then
-- If table exists and enabled key is set to true
print('"' .. inputtedID .. '" does exist!')
else
-- If the table doesn't exist or the key is false
print('"' .. inputtedID .. '" does not exist')
end