习惯的方式如果没有返回假?

时间:2013-11-08 05:08:45

标签: scala

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

val x:Option[T]

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

我在Scala: Boolean to Option查看了答案。那些接近我想要的,然后有更多惯用的方式:

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

4 个答案:

答案 0 :(得分:10)

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

如果您希望将true作为None的默认设置,请使用x.forall

答案 1 :(得分:4)

处理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

最后使用Scala Option实用程序方法:

x exists { _.isFooable }

答案 2 :(得分:3)

x map (_.isFooable) getOrElse false

答案 3 :(得分:1)

你想要

x map (_.isFooAble()).getOrElse(false)