Функциональное программирование: получить новую карту из существующей карты с измененным значением - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть одна карта, такая как

val strMap = Map[String, String]("a" -> "a1", "b" -> "b1") // Map(a -> a1, b -> b1)

, и я хочу создать другую карту с тем же ключом, но другим значением, основываясь на значении в strMap.Например,

case class Data(data: String) {}
var dataMap = scala.collection.mutable.Map[String, Data]()
strMap.foreach (keyVal => {dataMap(keyVal._1) = Data(keyVal._2)})
val dataMapToUse = dataMap.toMap // Map(a -> Data(a1), b -> Data(b1))

, но написание этого в императивном стиле вызывает проблему, такую ​​как создание «var dataMap», хотя я хочу получить неизменную карту.Из-за этого я должен вызвать toMap , чтобы получить то же самое.Как я могу добиться того же в функциональном программировании?

Scala Версия: 2.11

1 Ответ

0 голосов
/ 13 декабря 2018

Почему бы просто не использовать,

val dataMapToUse = strMap.map{case(k,v) =>(k -> Data(v))}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...