ほとんどのSQL実装(この質問はSQLとは関係ありません。これは単なる例です)は、そうでない場合にCOALESCE(x1,x2,...,xn)
返す関数を提供し、そうでない場合はどちらでもない場合にのみ返すなどです。すべての値が である場合、結果はです。x1
NULL
x2
x2
NULL
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 の一部として実装されたこの関数のようなものが既に存在するのだろうかと思います。