如何将字符串转换为 Lua 代码以从嵌套表中读取值

我有一个可配置的表提取函数的值,它作为输入字符串。我需要将该字符串作为代码执行,并从嵌套表中提取一个值。

我尝试使用 load(string),但它不起作用。

local function main()
  local t = {
    ["name1"] = "value1",
    ["name2"] = {["name1"] = "value1",
      ["name2"] = { 1, false, true, 23.54, "a \021 string" },
      name3 = nil
    },
    name3 = nil
  }
  local string = 't.name2.name1'
  print(type(string))
  print(load(string))
end

print(load(string)) 应该打印 value1

点赞
用户6207541
用户6207541

以下代码可以正常运行

local function main()

  t = {
    ["name1"] = "value1",
    ["name2"] = {["name1"] = "value1",
      ["name2"] = { 1, false, true, 23.54, "a \021 string" },
      name3 = nil
    },
    name3 = nil
  }
  string = "t.name2.name1"
  print(type(string))
  val = load("return "..string)()
  print(val)
end
2019-08-01 06:45:12