Lua递归问题意外结果



我想弄清楚为什么这个函数忽略了最中间的表?我忽略了一些简单的事情。

这是代码

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

最新更新