Thread Currying in Schleifen (18 answers)
Opened by flowdy at 2012-11-06 22:47

flowdy
 2012-11-09 22:00
#163228 #163228
User since
2012-08-03
45 Artikel
BenutzerIn

user image
Dass $curry_sub ja auch eine Liste von Werten zurückgeben könnte. Die müsste sie in einer anonymen Array-Referenz zurückgeben, die dann den ersten Rückgabewert bildet, damit der zweite Wert angeben kann, ob die Schleife fortgesetzt werden soll oder nicht.

Zwei Probleme:

Code (perl): (dl )
1
2
3
4
my @ret = $node->climb_up(sub {
    ...
    return [$val1, $val2, ...], $cont;
})


Und du fragst 3 Leser deines Codes, was @ret nach dem Aufruf von climb_up() wohl enthält und wirst mindestens 4 verschiedene Antworten erhalten. Dann sagst du ihnen, lest doch die Doku, und vielleicht tun sie's, vielleicht nicht, beidenfalls krausen sie die Stirn.

Und selbst wenn du auf die anonyme Referenz verzichtest, $cont einfach als letzten Wert zurück gibst und dann climb_up-intern mit $cont = pop @ret arbeitest, das macht obigen Code auch nicht intuitiver.

Nene, da vergess ich das mit climb_up und arbeite direkt mit while $p = $p->parent_row. Werde ich dann zwar an tausenden von Stellen tun. Aber, was Refaktorisierung betrifft, sollte man die Kirche schon noch im Dorf lassen: Nicht nur die Wiederholungsrate von Code macht aus ihm einen Refaktorisierungskandidaten, sondern auch seine Länge und seine Opazität (= die Notwendigkeit, die Doku zur Hilfe zu nehmen, um diesen Code zu verstehen).

Aber hätte sich ja auch zu einer guten Idee entwickeln können. ;-)
package MyClass; sub new {\b\b\b\b\b\b\b\b\buse Moose;

View full thread Currying in Schleifen