テーブルで構成された lua テーブルがあるので、ルート -> 子 -> 孫の 2 次元です。
この階層のどのレベルも「配列のようなもの」であるとは限りません。最初のレベルには「ギャップがゼロ」の整数があり、2 番目のレベルは整数によってもインデックス付けされていません (ただし、テーブルによって)。
問題のテーブルは、lib 内のプライベート構造です。ライブラリのユーザーが孫を解析する方法を提供したいと考えています。それらがすべて解析されている限り、それらが解析される順序についてはあまり気にしません。
私が最初に考えたのは、コールバックを受け入れる関数を使用することでした:
-- 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
私はしばらくこれについて考えてきましたが、それをクラックすることはできません。私が見たすべての例では、数字を使用して、反復ごとに簡単に「反復子の状態を管理」しています。数字がないので、ちょっと困っています。