In Java können Sie peek(x -> println(x))
auf einem Stream aufrufen, und es wird die Aktion für jedes Element ausführen und den ursprünglichen Stream zurückgeben, im Gegensatz zu Foreach, das Unit ist. Gibt es in Scala etwas Ähnliches, idealerweise etwas, das auf allen Monady-Typen funktioniert, so dass Sie das Original-Monad "passieren" können, während Sie eine Nebeneffekt-Aktion ausführen? (Logging, zum Beispiel)Gibt es so etwas wie die "Peek" -Operation von Java Stream in Scala?
Es ist natürlich leicht implementiert:
def tap[A, U](a: A)(action: (A) => U): A = {
action(a)
a
}
aber ich hoffe für etwas ein bisschen mehr elegant oder idiomatische.
'stream.map {x => println (x); x} 'oder sonst' stream.foreach (println); stream' – Dima
Der zweite würde nicht wie erwartet funktionieren, nehme ich an. – Det
Siehe http://Stackoverflow.com/a/23231684/21755 –