Lua: 将嵌套表的索引作为函数参数传递?

Lua: Passing index of nested tables as function arguments?

是否可以有一个函数可以访问 table 的任意嵌套条目? 以下示例仅适用于一个 table。但是在我的实际应用程序中,我需要函数来检查给定(嵌套)索引的几个不同的 tables。

local table1 = {
  value1 = "test1",
  subtable1 = {
    subvalue1 = "subvalue1",
  },
}

local function myAccess(index)
  return table1[index]
end

-- This is fine:
print (myAccess("value1"))

-- But how do I access subtable1.subvalue1?
print (myAccess("subtable1.subvalue1???"))

您将无法使用字符串执行此操作,除非您使用 load 将其视为 Lua 代码或创建一个在 table 上运行的函数。

您可以创建一个函数,将您的字符串按 . 拆分以获取每个键,然后一个一个地进行。

您可以使用 gmatch + gmatch 上面的一个局部与当前 table。

@Spar:这是你的建议吗?无论如何它都有效,所以谢谢!

local table1 = {
  value1 = "test1",
  subtable1 = {
    subvalue1 = "subvalue1",
  },
}


local function myAccess(index)
  
  local returnValue = table1
  for key in string.gmatch(index, "[^.]+") do 
    if returnValue[key] then
      returnValue = returnValue[key]
    else
      return nil
    end
  end
  
  return returnValue
end

-- This is fine:
print (myAccess("value1"))

-- So is this:
print (myAccess("subtable1.subvalue1"))