我已经在 Scala 上编码了 2 年,并且在我的代码中使用了很多 Option。我觉得很清楚,很容易理解,也很容易治疗。这是正常的方法:
val optString = Some("hello")
optString match {
case Some(str) => //do something here!
case None => //do something here
}
我认为这是处理 Scala Options 的最佳方法,但我想问是否有更好的方法?
最佳答案
这实际上取决于用例。当我有一个选项并且需要对 Some
或 None
应用操作以产生相同的值时,我采用的一般模式是使用 Option.fold
:
val opt = Some(1)
val res: Int = opt.fold(0)(existing => existing + 1)
如果您不喜欢 fold
,map
和 getOrElse
会反向执行相同的操作:
val res: Int = opt.map(_ + 1).getOrElse(0)
如果我想继续在 Option
容器内,map
就可以了。
关于Scala 选项模式匹配替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918041/