根据某些条件更新地图

时间:2015-11-29 23:10:06

标签: scala

我正在尝试进行更新(如果存在),如果不存在则更新"喜欢在Scala中对可变ParMap进行操作。我能想到的最好的事情是:

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

myMap updated(aKey, update) 

嗯,这很有效,但我很确定这是解决这个问题的更有效的方法。你能提供一些重构的想法吗?

2 个答案:

答案 0 :(得分:1)

val update = myMap.get(aKey) match {
  case None => createValueForEmpty(...)
  case Some(value) => createValueForUpdate(...) 
}

或等效的myMap.get(aKey).fold(createValueForEmpty(...))(value => createValueForUpdate(...))(根据createValue...的实际情况,可能会或可能不会更具可读性。

答案 1 :(得分:0)

这个怎么样:

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