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"))
是否可以有一个函数可以访问 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"))