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 的最佳方法,但我想问一下是否有更好的方法?
这真的取决于用例。当我有一个选项并且我需要对 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 编写代码 2 年了,我在我的代码中使用了很多选项。我觉得很清楚,很容易理解,也很容易治疗。这是一个正常的做法:
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
就可以了。