[英]How can I create recursive generator in dart?
例如,我想編寫一個生成器來迭代一棵樹。 我可以使用遞歸函數調用嗎?
Iterator<node> forallchildren(node) {
for (var n in node.children) {
yield n;
forallchildren(n);
}
}
看起來遞歸調用僅生成迭代器,而不像遍歷樹一樣。 有沒有更好的辦法?
如果您使用sync*
標記函數,則只能在返回Iterable
的函數中使用yield
(而不是Iterator
)。
此外,要從Iterable
產生元素,必須使用yield*
。
因此,您可以像下面這樣編寫代碼:
Iterable<Node> forallchildren(Node node) sync* {
for (var n in node.children) {
yield n;
yield* forallchildren(n);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.