Çok VolkerK tarafından CEVAPLARI KONTROL EDİNİZ, o başka bir çözüm sağladı, ama ben cevap olarak iki mesaj işaretleyebilirsiniz olamaz. (
Gün iyi!
I know that C# allows multiple iterators using yield, like described here: http://stackoverflow.com/questions/1754041/is-multiple-iterators-is-possible-in-c
PHP var ve Iterator arayüzü. Bir sınıf için birden fazla yineleme senaryoyu uygulamak mümkün mü?
Daha fazla detay (EDIT):
Örneğin ben sınıf TreeNode tek ağaç düğümü uygulama var. Bütün ağacı sadece biri bu sınıfı kullanılarak ifade edilebilir. Ben BreadthFirst veya DepthFirst sırasını kullanarak, örneğin, geçerli düğümün tüm doğrudan ve dolaylı çocukları yinelenmesi için yineleyicileri sağlamak istiyoruz.
Ben ayrı sınıflar olarak bu Yineleyicilerde uygulayabilirsiniz ama bunu yaparken ben ağaç düğümü bu genel olarak çocuk koleksiyonu bulunuyor maruz gerektiğini gerekir.
C # pseudocode:
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'
}
}
}