【问题标题】:Update a map based on some condition根据某些条件更新地图
【发布时间】:2015-11-29 23:10:05
【问题描述】:

我正在尝试在 Scala 中对可变 ParMap 执行“如果存在则更新,如果不存在则放置”之类的操作。我能想到的最好的事情是:

val update = if (myMap isDefinedAt aKey) {
    createValueForUpdate(...) 
} else {
    createValueForEmpty(...)
}

myMap updated(aKey, update) 

嗯,这行得通,但我很确定有一种更实用的方法可以解决这个问题。您能否提供一些重构想法?

【问题讨论】:

    标签: scala


    【解决方案1】:
    val update = myMap.get(aKey) match {
      case None => createValueForEmpty(...)
      case Some(value) => createValueForUpdate(...) 
    }
    

    或等效的myMap.get(aKey).fold(createValueForEmpty(...))(value => createValueForUpdate(...))(根据createValue...s 的实际外观,它可能更具可读性,也可能不更具可读性)。

    【讨论】:

      【解决方案2】:

      这个怎么样:

      val update = myMap.get(aKey).map(
          _ => createValueForUpdate(...)
          ).getOrElse(createValueForEmpty(...))
      

      【讨论】:

        猜你喜欢
        • 2013-03-31
        • 2015-12-26
        • 2019-10-24
        • 1970-01-01
        • 2011-11-29
        • 2022-01-22
        • 1970-01-01
        • 2021-01-09
        • 1970-01-01
        相关资源
        最近更新 更多