2

我正在处理的 java 库返回null错误。有没有一种惯用的说法:

val x:Option[T]

if(x.isEmpty)
 false
else
 x.get.isFooable()

我看过Scala: Boolean to Option的答案。这些接近我想要的,然后有更惯用的方式:

x.isDefined && x.get.isFooable()
4

4 回答 4

10
x.exists(_.isFooable) // Returns false if x is None

如果您想true作为 的默认值None,请使用x.forall

于 2013-11-08T06:05:52.930 回答
5

处理选项的方法有很多。最惯用的是将计算提升到 Option:

val x = Option(true)
x map { if(_) 10 else 20 }

如果您使用 Option[Boolean] 进行条件分支,则比模式匹配更可取:

c match {
  case Some(true)  => println("True")
  case Some(false) => println("False")
  case None        => println("Undefined")
}

你的情况:

x.isDefined && x.get.isFooable()

有点清楚:

x map { _.isFooable } getOrElse false

最后使用 ScalaOption实用方法:

x exists { _.isFooable }
于 2013-11-08T05:28:55.697 回答
3
x map (_.isFooable) getOrElse false
于 2013-11-08T05:28:48.150 回答
1

你要

x map (_.isFooAble()).getOrElse(false)
于 2013-11-08T05:29:06.243 回答