【发布时间】:2010-03-14 11:24:38
【问题描述】:
请检查 VolkerK 的答案,他提供了另一种解决方案,但我无法将两个帖子标记为答案。 :(
美好的一天!
我知道 C# 允许使用 yield 的多个迭代器,如下所述: Is Multiple Iterators is possible in c#?
在 PHP 中有 Iterator 接口。是否可以为一个类实现多个迭代场景?
更多细节(编辑):
例如,我有实现单个树节点的类 TreeNode。整个树可以只使用一个此类来表示。我想提供迭代器来迭代当前节点的所有直接和间接子节点,例如使用 BreadthFirst 或 DepthFirst 顺序。
我可以将这个迭代器实现为单独的类,但这样做我需要树节点应该将它的子集合公开。
C# 伪代码:
public class TreeNode<T>
{
...
public IEnumerable<T> DepthFirstEnumerator
{
get
{
// Some tree traversal using 'yield return'
}
}
public IEnumerable<T> BreadthFirstEnumerator
{
get
{
// Some tree traversal using 'yield return'
}
}
}
【问题讨论】:
-
好东西,它认为跨开发语言连接知识是件好事。
-
您对已接受答案的哪一部分感兴趣?一个类“提供”不同迭代器的部分,还是同时使用同一对象的两个迭代器的部分?或两者? ;-)
-
我对类提供不同迭代器的情况感兴趣
-
您可能想解释一下
yield return的作用或给出一个示例用例
标签: php design-patterns iterator