【发布时间】:2015-03-24 13:34:20
【问题描述】:
大多数SQL实现(这个问题与SQL无关,只是一个例子)提供函数COALESCE(x1,x2,...,xn),如果它不是x1,则返回NULL,x2否则仅当x2不是NULL 也不是等等。如果所有xi 的值都是NULL,那么结果就是NULL。
我想在 Scala 中获得类似于 SQL 的 COALESCE 的东西,因为 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 的一部分实现的东西。
【问题讨论】:
标签: scala scala-option