我想弄清楚为什么这个函数忽略了最中间的表?我忽略了一些简单的事情。
这是代码
tbl = {
name = "first table";
tbl = {
name = "middle table";
tbl = {
name = "last table";
};
};
}
sayName = function(tbl)
print(tbl.name)
if tbl.tbl ~= nil then
for _,v in pairs(tbl.tbl) do
sayName(v)
end;
end;
end;
sayName(tbl)
输出>
first table
last table
nil
在您的示例中,您有一个递归结构,每个表都有1个name
,可能还有一个子表tbl
。所以,我不清楚为什么在这种情况下会使用for
循环。
tbl = {
name = "first table",
tbl = {
name = "middle table",
tbl = {
name = "last table"
}
}
}
function PrintTable (Table)
print("# Name", Table.name)
local SubTable = Table.tbl
if SubTable then
return PrintTable(SubTable)
end
end
PrintTable(tbl)
将返回:
# Name first table
# Name middle table
# Name last table