【发布时间】:2021-08-10 12:54:48
【问题描述】:
我有 2 个 Scala 选项,我需要将它们组合在一起以进行进一步处理。其中之一可以是无。
我将理解用作:
val first: Option[Int] = Some(2)
val second: Option[Int] = Some(3)
val result: Option[String] = for {
f <- first
s <- second
} yield {
s"Inputs are $f and $s "
}
但如果其中一个选项是无,Scala 将跳过 yield 块。即使没有,我也希望执行 yield。如何做呢?也许我可以在 for 块中放置一些过滤器,将原始 None 转换为一些非 None 值。
所以基本上可以做到:
val result: Option[String] = for {
f <- first
s <- second.isDefined else Some(-1)
} yield {
// my logic
}
【问题讨论】:
-
您可能希望在两个选项上都使用模式匹配或仅使用
getOrElse,而不是使用for。
标签: scala