gpt4 book ai didi

dart - 如何在 dart 中创建递归生成器?

转载 作者:IT王子 更新时间:2023-10-29 06:49:46 24 4
gpt4 key购买 nike

比如我想写一个生成器来迭代一棵树。我可以使用递归函数调用吗?

Iterator<node> forallchildren(node) {
for (var n in node.children) {
yield n;
forallchildren(n);
}
}

看起来递归调用只生成迭代器而不像遍历树。有没有更好的办法?

最佳答案

如果用 sync*< 标记函数,则只能在返回 Iterable(不是 Iterator)的函数中使用 yield/.

此外,要从 Iterable 生成元素,您必须使用 yield*

所以你可以这样写你的代码:

Iterable<Node> forallchildren(Node node) sync* {
for (var n in node.children) {
yield n;
yield* forallchildren(n);
}
}

关于dart - 如何在 dart 中创建递归生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com