Gibt es eine Art "Tee" -Operation auf Option
in Scala Standard-Bibliothek verfügbar? Das Beste, was ich finden konnte, ist foreach
, aber sein Rückgabetyp ist Unit
, daher kann es nicht verkettet werden.'Tee' Operation auf Scala Optionstyp?
Das ist, was ich suche: eine Option
Instanz gegeben, führen Sie einige Operation mit Nebenwirkungen auf ihren Wert, wenn die Option nicht leer ist (Some[A]
), sonst nichts tun; gib die Option auf jeden Fall zurück.
Ich habe eine benutzerdefinierte Implementierung eine implizite Klasse verwenden, aber ich frage mich, ob es ein gemeinsamer Weg ist, dies ohne implizite Konvertierung zu tun:
object OptionExtensions {
implicit class TeeableOption[A](value: Option[A]) {
def tee(action: A => Unit): Option[A] = {
value foreach action
value
}
}
}
Beispielcode:
import OptionExtensions._
val option: Option[Int] = Some(42)
option.tee(println).foreach(println) // will print 42 twice
val another: Option[Int] = None
another.tee(println).foreach(println) // does nothing
Beliebig Vorschläge?
Ich nehme nicht an, dass Sie irgendetwas sehen werden, das implizit Nebenwirkungen in eine Funktion in der Standardbibliothek injiziert. –
Nebenwirkungen und funktionale Programmierung sind keine Freunde. –
gibt es nicht. http://stackoverflow.com/questions/9671620/how-to-keep-return-value-when-logging-in-scala http: // stackoverflow.com/questions/16742060/äquivalent-zu-rubys-tap-methode-in-scala –