Lua - 检查用户输入的表是否存在并从中读取

首先,让我解释一下我的设置。我有两个lua文件:一个是主程序,用于运行,另一个是配置文件。在主程序中,它会运行一次配置文件并将所有表加载到内存中。如果我想添加一个新的配置,我不想重新编程主程序,我只想能够在配置文件中添加一个新的表。

主程序:

-- 读取配置
dofile("config.lua")

-- 请求ID
inputtedID = io.read()
-- 检查是否存在
if string.format("%s[enabled]", inputtedID) then
    --如果表存在并且启用键设置为true
    print('"' .. inputtedID .. '"存在!')
else
    -- 如果表不存在或键为false
    print('"' .. inputtedID .. '"不存在')
end

配置文件:

Public = {
enabled = true,
directory = "whatever"
}
Snapshot = {
enabled = true,
directory = "something"
}
--等等

每个表都将具有相同的要读取的键,但我们需要关注的是“enabled”键。这就引出了这个问题...

我希望它接受用户输入,检查是否有与用户输入匹配的表,并检查该表中的“启用”键值是否为“true”。如果表不存在或值为false,则只需运行另一组要求重试的代码。

而具体我遇到困难的地方就是每当我尝试在引用或处理表时使用变量时。我不知道它如何完成,也不知道它应该如何完成。

点赞
用户231299
用户231299

所有的全局变量都是全局表 _G 的成员,您可以通过变量名称进行索引:

-- 读取配置
dofile("config.lua")

-- 询问ID
inputtedID = io.read()

-- 检查它是否存在
if _G[inputtedID] and _G[inputtedID].enabled then
    -- 如果表存在且已启用键设置为真
    print('"' .. inputtedID .. '" 存在!')
else
    -- 如果表不存在或键不存在或键值为假
    print('"' .. inputtedID .. '" 不存在')
end
2014-05-01 01:58:33