Felix Riesterer: Gibt es einen Sinn für Anweisungen in if-Bedingiungen?

Beitrag lesen

Lieber 1unitedpower,

Zum Beispiel gibt es in PHP keinen asynchronen Event-Loop, also gibt es auch keinen Bedarf an asynchronen Datenstrukturen wie Streams oder Promises.

dafür gibt es Sessions... grins

Nehmen wir zum Beispiel einen Baum: Da reicht eine Schleife nicht mehr aus, und wie mans auch letztlich macht, man sieht dem Code auf einem flüchtigen Blick nicht mehr an, dass er der Iterations eines Baumes dient.

Da greife ich zu rekursiven Strukturen, schreibe Funktionen, die sich selbst wieder aufrufen. Besser?

Schlimmer wird es, wenn man den Baum mehrmals Iterieren möchte und immer wieder den gleichen Iterations-Algorithmus niederschreiben muss.

Ist das bei rekursiven Funktionen auch notwendig?

Niemand will schließlich Code-Duplikation.

Eben.

Nun wollen wir den Baum iterieren und am Ende einen Baum haben, der die selbe Struktur wie der vorherige aufweist: Also die gleiche Anzahl an Knoten, aber vor allem auch die gleichen Verzweigungen an korrespondierenden Knoten. Viel Glück mit dem Iterator-Interface, Stichworte RecursiveTreeIterator und RecursiveIteratorIterator.

Aha! Recursive Tree Iterator! Da ist ja die Rekursion von der ich oben schrubte. :-)

$processedArray = array_map($processItem, $array);
$processedList = $list->map($processItem);
$processedTree = $tree->map($processItem);
// etc. pp

Sieht echt wunderbar übersichtlich aus. Sollte ich mal demnächst probieren.

In den vollen Genuss kommt man natürlich erst, wenn man eine Library (z.B. pramda) einsetzt, die einem die diversen Algorithmen über konsistente Schnittstellen zugänglich macht.

Igitt!!! Not invented here!!! ;-P

Liebe Grüße,

Felix Riesterer.