【发布时间】:2014-10-02 16:17:54
【问题描述】:
如果Option[Int] 包含特定值,我想编写一个返回true 的方法,否则返回false。这样做的惯用方式是什么?
var trueIf5(intOption: Option[Int]): Boolean {
intOption match {
case Some(i) => i == 5
case None => false
}
}
上述解决方案显然有效,但 Scala 文档将此方法标记为 less-idiomatic。
有什么方法可以让我使用map、filter 或其他方法来做同样的事情吗?
我已经做到了这一点,但它只是将问题更改为“如果 Option 包含 true,则返回 true”,这实际上与“如果 Option 包含 5,则返回 true”相同。
var trueIf5(intOption: Option[Int]): Boolean {
intOption.map(i => i == 5).???
}
【问题讨论】:
-
exists是正确答案,但您上面的???将是.getOrElse(false)。然后你认识到你有.map(f).getOrElse(z)并称之为.fold(z)(f)。然后你意识到(在Option).fold(false)是.exists和.fold(true)是.forall。
标签: scala