我有一小段 Scala 代碼,我想對其進行優化以使其功能更強大。
我得到以下
val foo: Option[Double]
val bar: Map[String, Double]
和一個方法 Option[Map[String, Double]]
因此,在我的業務邏輯中,我嘗試確定是否foo已定義。如果是,我必須傳遞None給該方法,因為foo和bar不能同時存在。
我目前通過以下方式處理這個
val newOptionalMap = if (foo.isDefined) {
None
} else {
Some(bar)
}
myFunction(newOptionalMap)
我想把它變成一種更實用的方法。我試過
val newOptionalMap = foo.map(_ => bar)
但是,這是失敗的,因為它從來沒有真正定義bar的None,因此我的方法失敗,因為它不希望雙方foo并bar可以同時定義。
我可以采用哪種功能方法來簡化條件邏輯?
uj5u.com熱心網友回復:
有兩種方法可以處理您的問題。
正如@jwvh 所述,您可以輕松使用fold:
val newOptionalMap = foo.fold(Option(bar))(_ => None))
另一種方法是使用模式匹配:
val newOptionalMap = foo match {
case Some(_) => None
case _ => Some(bar)
}
這里有一個關于折疊或模式匹配用法的討論,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393582.html
