Most SQL implementations (this question has nothing to do with SQL, this is just an example) offers a function COALESCE(x1,x2,...,xn) that returns x1 if it is not NULL , x2 otherwise, only if x2 not NULL and etc. If all xi are NULL , then the result is NULL .
I wanted to get something like SQL COALESCE in Scala for Option NULL values instead of None . I will give some examples:
> 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
So, I implemented it as:
def coalesce[T](values: Option[T]*): Option[T] = (List[T]() /: values)((prev: List[T], cur: Option[T]) => prev:::cur.toList).headOption
It works great, but it seems to me that there is already something like this function implemented as part of Scala.
source share