Lua 递归问题意外结果
Lua Recursion issue unexpected result
我想弄清楚为什么这个函数忽略了最中间的 table?我忽略了一些我认为很简单的事情。
这是代码
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
在您的示例中,您有一个递归结构,每个 table 有 1 个 name
并且可能有一个名为 tbl
的子 table。所以,我不清楚为什么要在这些条件下使用 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)
会 return:
# Name first table
# Name middle table
# Name last table
我想弄清楚为什么这个函数忽略了最中间的 table?我忽略了一些我认为很简单的事情。
这是代码
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
在您的示例中,您有一个递归结构,每个 table 有 1 个 name
并且可能有一个名为 tbl
的子 table。所以,我不清楚为什么要在这些条件下使用 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)
会 return:
# Name first table
# Name middle table
# Name last table