Rekursiver Lambda-Ausdruck, um einen Baum in C # zu durchlaufen
Kann mir jemand zeigen, wie man implementieren Sie eine rekursive lambda-Ausdruck zum durchqueren einer Struktur in C#.
InformationsquelleAutor der Frage Joel Cunningham | 2008-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, fand ich einige freie Zeit ist endlich.
Hier gehen wir:
InformationsquelleAutor der Antwort aku
Richtige Lösung, und zwar die idiomatischen Lösung, die in vielen funktionalen Programmiersprachen, wäre die Verwendung eines fixed-point-combinator. In a nutshell: a fixed-point-combinator Antworten auf die Frage "wie definiere ich eine anonyme Funktion rekursiv sein?". Aber die Lösung ist also nicht trivial, die ganzen Artikel geschrieben werden, um diese zu erklären.
Eine einfache, pragmatische alternative ist es, "in der Zeit zurückgehen", um die Eskapaden der C: - Deklaration vor der definition. Versuchen Sie Folgendes:
Funktioniert wie ein Charme.
InformationsquelleAutor der Antwort Konrad Rudolph
Ja, das funktioniert, mit einer kleinen Einschränkung. C# hat veränderliche Verweise. So stellen Sie sicher, dass Sie nicht versehentlich etwas tun, wie dieses:
Natürlich, dieses Beispiel ist etwas konstruiert, aber dies könnte passieren, wenn mit veränderliche Verweise. Wenn Sie die combinators von aku's links, das wird nicht möglich sein.
InformationsquelleAutor der Antwort Tom Lokhorst
Unter der Annahme einer mythischen Objekt TreeItem, dass conatins eine Kinder-Kollektion zu vertreten, Ihre Hierarchie.
Nun, nennen Sie es, vorbei an der lambda behandelt ein Element, indem Druck Ihrer Namen auf der Konsole aus.
InformationsquelleAutor der Antwort DevelopingChris