我正在尝试进行更新(如果存在),如果不存在则更新"喜欢在Scala中对可变ParMap
进行操作。我能想到的最好的事情是:
val update = if (myMap isDefinedAt aKey) {
createValueForUpdate(...)
} else {
createValueForEmpty(...)
}
myMap updated(aKey, update)
嗯,这很有效,但我很确定这是解决这个问题的更有效的方法。你能提供一些重构的想法吗?
答案 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(...))