我正在尝试编写一个接受3个可选值并返回第一个非无可选值的函数。我的代码可以正常工作,但是看起来有点笨拙,想知道是否有更好的方法可以做到这一点。下面是我的代码
def firstNotNone[T](x: Option[T], y: Option[T], z: Option[T]): Option[T] = x.getOrElse(y.getOrElse(z.getOrElse(None))) match {
case None =>None
case value :T => Option(value)
}
Run Code Online (Sandbox Code Playgroud)
使用orElse功能:
def firstNotNone[T](x: Option[T], y: Option[T], z: Option[T]): Option[T] =
x.orElse(y).orElse(z)
Run Code Online (Sandbox Code Playgroud)