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

标签 scala pattern-matching scala-option

我已经在 Scala 上编码了 2 年,并且在我的代码中使用了很多 Option。我觉得很清楚,很容易理解,也很容易治疗。这是正常的方法:

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 就可以了。

关于Scala 选项模式匹配替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918041/

相关文章:

scala - 在哪里可以找到scala.Any和scala.AnyRef的定义?

scala - 理解抽象方法重写具体方法时的逻辑

javascript - 如何使用 JavaScript 匹配我所在窗口的当前 URL 中的字符串?

class - Scala:忽略等于/哈希码的案例类字段?

scala - 嵌套 Scala 匹配器为什么 Some(Some(1),1) 无法匹配?

scala - Scala 中带有 getOrElse bool 默认值的选项

scala - 使用泛型强制 Scala 特征的类型

使用泛型函数的映射对 Seq 进行排序的 Scala 函数

c++ - C++ 可以做类似 ML case 表达式的事情吗?

scala - 获取 URL 时最好返回 None 还是抛出异常?