至少你可以在updateKey
邏輯分離到不同的功能,也可能使用模式來匹配if else
。
val newMap = originalMap map { case (key, value) => (updatedKey(key), value)}
至少它看起來更清潔,但不一定比你的解決方案。
class UpdateKeysSpecs extends FunSuite {
test("updates the keys") {
val originalMap : Map[String, String]= Map("key1" -> "value1",
"key2_old" -> "value2",
"key3_something" -> "value3")
val newMap = originalMap map { case (key, value) => (updatedKey(key), value)}
assert(newMap.keys == Set("key1", "key2_new", "key3_nothing"))
}
def updatedKey(key: String): String = {
key.contains("old") match {
case true => key.replace("old", "new")
case false => {
key.contains("something") match {
case true => key.replace("something", "nothing")
case false => key
}
}
}
}
}
您能否詳細說明爲什麼要這麼做?如果你定期這樣做,在Map中改變一個*鍵*對我來說有點奇怪,你爲什麼需要這樣做? –
其不定期,只有在有需要時... – Garipaso
而不是地圖,用例類,並根據需要更新值需要 – Jet