在Scala中是否可以简化以下if / else语句?

我正试图存储最高价格.还有一些其他的业务规则,但三个嵌套的if语句看起来非常程序化和混乱.我想知道是否有更好的功能方式来表达以下逻辑.

val sunsetTime1 = "14:00:00.000"
val maxPrices = new HashMap[String, Double]

if (trade.dateTime.before(time1)) {
  if (maxPrices.contains(sunsetTime1)) {
    if (maxPrices(sunsetTime1) < trade.price) {
      maxPrices.put(sunsetTime1, price)
    }
  }
  else {
    maxPrices.put(sunsetTime1, price)
  }

}
最佳答案
我不是Scala专家,您应该检查该代码,但我猜模式匹配和Options是更多Idiomatic Sc​​ala.

if (trade.dateTime.before(time1)) {
  maxPrices.get(sunsetTime1) match {
    case Some(oldPrice) if oldPrice < trade.price => maxPrices.put(sunsetTime1, price)
    case None => maxPrices.put(sunsetTime1, price)
  }
}

干杯.

转载注明原文:在Scala中是否可以简化以下if / else语句? - 代码日志