Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Funktionale Programmierung / Daten-Feeds
Der rückwärtige Feed
Jeder Feed bisher floss mit ==> vorwärts, von einer
Quelle links in ein Ziel rechts. Raku hat auch den gespiegelten
Operator, <==, den rückwärtigen Feed.
Er läuft andersherum: Das Ziel steht links, und die
Daten werden von der Quelle rechts hereingezogen.
Hier ist die Pipeline mit den geraden Zahlen von zuvor, rückwärts geschrieben:
my @evens <== grep(* %% 2) <== (1..10);
say @evens; # [2 4 6 8 10]Lesen Sie es von rechts nach links: nimm 1..10, behalte
die geraden Zahlen und sammle sie in @evens. Das Ergebnis
ist genau dasselbe wie bei
(1..10) ==> grep(* %% 2) ==> my @evens — nur die
Richtung, in der Sie die Stufen schreiben, hat sich geändert.
Rückwärtige Feeds reihen sich genauso aneinander, und wieder steht das Ziel voran:
my @result <== map(* ** 2) <== grep(* %% 2) <== (1..10);
say @result; # [4 16 36 64 100]Die Arbeit geschieht weiterhin quellenzuerst — beginne mit
1..10, behalte die geraden, quadriere sie —, doch auf dem
Papier sind die Stufen vom Ziel zurück zum Ursprung aufgeführt. Die
Reihenfolge der Elemente bleibt unberührt; <== ändert
nur die Leserichtung, niemals die Daten.
Da Code gewöhnlich von links nach rechts gelesen wird, liest sich das
vorwärtige ==> meist natürlicher: Sie begegnen zuerst
den Daten und folgen ihnen dorthin, wo sie landen. Das rückwärtige
<== gibt es für die Gelegenheiten, bei denen das Ziel
voranzustellen die Geschichte besser erzählt — erst benennen, was
Sie bauen, dann woraus es gebaut ist. Die beiden sind
genaue Spiegelbilder, wählen Sie also die Richtung, die sich am besten
liest.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Quiz — Feeds | Quiz — Der rückwärtige Feed →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.