Quiero poder aplicar una operación f: (T,T) => T
a Option[T]
valores en Scala. Quiero que el resultado sea None
si alguno de los dos valores es None
.Cómo combinar valores de opción en Scala?
Más específicamente, quiero saber si hay una manera más corta de hacer lo siguiente:
def opt_apply[T](f: (T,T) => V, x: Option[T], y: Option[T]): Option[T] = {
(x,y) match {
case (Some(u),Some(v)) => Some(f(u,v))
case _ => None
}
}
He tryied (x zip y) map {case (u,v) => f(u,v)}
pero el resultado es un Iterator[T]
no un Option[T]
.
Cualquier ayuda será apreciada. Gracias.
errrr, esto debería actualizarse correctamente http://docs.scala-lang.org/style/control-structures.html como debería ser para {x0 <- x; y0 <- y)}, creo, ¿verdad? –
@DeanHiller, hmm, sí. La guía de estilo no existía en el momento en que pienso. :) – missingfaktor