我已经在Scala上编码了两年,我在代码中使用了很多Option。我觉得它非常清晰,易于理解并且易于治疗。这是一种常规方法:
val optString = Some("hello")
optString match {
case Some(str) => //do something here!
case None => //do something here
}
我认为这是处理Scala选项的最佳方式,但我想问一下更好的方法吗?
答案 0 :(得分:4)
这实际上取决于用例。当我有一个选项并且我需要将操作应用于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
就可以了。