Я хочу иметь возможность применять операции f: (T,T) => T
to Option[T]
значения в Scala. Я хочу, чтобы результат был None
, если любое из двух значений None
.
В частности, я хочу знать, существует ли более короткий способ сделать следующее:
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
}
}
Я попробовал (x zip y) map {case (u,v) => f(u,v)}
, но результатом является Iterator[T]
не a Option[T]
.
Любая помощь будет оценена. Спасибо.