Scala选项模式匹配替代方案?

时间:2017-08-28 11:35:16

标签: scala pattern-matching scala-option

我已经在Scala上编码了两年,我在代码中使用了很多Option。我觉得它非常清晰,易于理解并且易于治疗。这是一种常规方法:

val optString = Some("hello")

optString match {
    case Some(str) => //do something here!
    case None => //do something here
}

我认为这是处理Scala选项的最佳方式,但我想问一下更好的方法吗?

1 个答案:

答案 0 :(得分:4)

这实际上取决于用例。当我有一个选项并且我需要将操作应用于SomeNone并产生相同值时,我采用的一般模式是使用Option.fold

val opt = Some(1)
val res: Int = opt.fold(0)(existing => existing + 1)

如果您不喜欢foldmapgetOrElse会反过来做同样的伎俩:

val res: Int = opt.map(_ + 1).getOrElse(0)

如果我想在Option容器内继续,map就可以了。