大多数 SQL 实现(这个问题与 SQL 无关,它只是一个例子)提供COALESCE(x1,x2,...,xn)
返回x1
if it is not的函数NULL
,x2
否则只有 if x2
is not notNULL
两者等等。如果所有xi
值都是,NULL
则结果为NULL
。
我想COALESCE
在 Scala 中获得类似 SQL 的东西,以便将Option
值NULL
替换为None
. 我会给你一些例子:
> 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
所以我将其实现为:
def coalesce[T](values: Option[T]*): Option[T] =
(List[T]() /: values)((prev: List[T], cur: Option[T]) =>
prev:::cur.toList).headOption
它工作正常,但我想知道是否已经存在类似这个函数作为 Scala 的一部分实现的东西。