Proc & Tee
Mit "proc" und "tee" lassen sich ohne Unterbrechung einer Verarbeitungskette extra Befehle ausführen.
Tee
"tee" funktioniert wie ein T-Stück. Das aktuelle Objekt wird am Ende unverändert weiter gegeben.
5.print.tee( 'a'.print ).print
Die Ausgabe von diesem Beispiel ist:
5
a
5
Der Befehl "'a'.print" wird hier mit ".tee()" in die Verarbeitungskette eingefügt. Wobei die Verarbeitungskette dadurch nicht verändert wird, da "tee" den vorherigen Wert (5) an die nachfolgende Funktion (print) weitergibt.
Proc
"proc" steht für "Process", also eine Verarbeitung. So wird nach dieser Verarbeitung mit dessen Endergebnis fortgefahren.
5.print.proc( 'a'.print ).print
Die Ausgabe ist in diesem Fall:
5
a
a
Aktuelles Objekt
Mit "cur" lässt sich in "proc" oder "tee" auch das aktuelle Objekt verwenden. Hierzu wird "cur" als Basis-Objekt verwendet.
5.print.proc( cur.add(3).print ).print
Hier wird somit mit dem aktuellen Objekt ein Zwischen-Prozess ausgeführt und mit dessen Ergebnis im aktuellen Stream fortgefahren.
Ausgabe:
5
8
8
Weitere Beispiele:
3.proc( cur + 4 ).print
3.tee( cur + 4 ).print
Während bei "proc" nun 7 ausgegeben wird, gibt die zweite Zeile mit "tee" die 3 aus.
Benutzung mit VarLet
"proc" und "tee" können auch mit zwei Argumenten aufgerufen werden. So wird einerseits eine Variable (VarLet) übergeben, worin das aktuelle Objekt gespeichert wird, andererseits dann der gewünschte Prozess:
3.proc( :a, 4+3*a ).print
Das aktuelle Objekt in der Verarbeitungskette (die 3) wird in der Variable "a" gespeichert und kann so flexibel im nachfolgenden Prozess eingebaut werden.
Ausgabe:
13