我想弄清楚為什么這個函式忽略了最中間的表?我忽略了一些簡單的假設。
這是代碼
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
uj5u.com熱心網友回復:
在您的示例中,您有一個遞回結構,每個表都有 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403065.html
標籤:
上一篇:在javascript中的for回圈中呼叫遞回的遞回函式
下一篇:序言中的歸并排序-無限遞回?
