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

Scala options pattern matching alternatives?

我已经使用 Scala 编写代码 2 年了,我在我的代码中使用了很多选项。我觉得很清楚,很容易理解,也很容易治疗。这是一个正常的做法:

val optString = Some("hello")

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

我认为这是处理 Scala Options 的最佳方法,但我想问一下是否有更好的方法?

这真的取决于用例。当我有一个选项并且我需要对 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 就可以了。