我有一个由表组成的 lua 表,所以它是二维的:根 -> 子 -> 孙子。
此层次结构的任何级别都不能保证是“类数组”。第一级具有“零间隙”的整数,第二级甚至没有被整数索引(而是被表索引)。
有问题的表是库中的私有结构。我想为图书馆用户提供一种解析其孙辈的方法。我不太关心它们的解析顺序,只要它们都是。
我首先想到的是使用一个接受回调的函数:
-- this scope has access to root
function eachGrandChild(callback)
for _,child in pairs(root) do
for index,grandChild in pairs(child)
callback(index, grandChild)
end
end
end
用法:
-- no access to root, only to eachGrandChild
eachGrandChild(function(index, grandChild) print(index, grandChild) end)
这么多就明白了。
我的问题是:我可以使用迭代器来提供类似的功能吗?
我说的是可以让我这样做的东西:
for index,grandChild in iterator() do
print(index, grandChild)
end
我一直在考虑这个问题,但我无法破解它。我见过的所有示例都使用数字在每次迭代中轻松“管理迭代器的状态”。由于我没有数字,我有点卡住了。