maggior parte delle implementazioni di SQL (questa domanda non ha nulla a che fare con SQL, è solo un esempio) offrono la funzione COALESCE(x1,x2,...,xn)
che restituisce x1
se non è NULL
, x2
altrimenti solo se x2
non è NULL
né e così sopra. Se tutti i valori xi
sono NULL
, il risultato è NULL
.coalescenza opzioni in Scala
Volevo ottenere qualcosa come SQL COALESCE
in Scala per i valori Option
NULL
sostituito da None
. Vi darò alcuni esempi:
> coalesce(None,Some(3),Some(4))
res0: Some(3)
> coalesce(Some(1),None,Some(3),Some(4))
res1: Some(1)
> coalesce(None,None)
res2: None
Così ho implementato come:
def coalesce[T](values: Option[T]*): Option[T] =
(List[T]() /: values)((prev: List[T], cur: Option[T]) =>
prev:::cur.toList).headOption
Funziona bene, ma mi chiedo se esiste già qualcosa di simile funzione implementata come parte della Scala.
Possibilmente un duplicato di: http://stackoverflow.com/questions/3644154/scala-return-on-first-in-list? – DNA