Quelle est la syntaxe pour ajouter un élément à un scala.collection.mutable.Map?
Voici quelques tentatives infructueuses:
val map = scala.collection.mutable.Map
map("mykey") = "myval"
map += "mykey" -> "myval"
map.put("mykey","myval")
Quelle est la syntaxe pour ajouter un élément à un scala.collection.mutable.Map?
Voici quelques tentatives infructueuses:
val map = scala.collection.mutable.Map
map("mykey") = "myval"
map += "mykey" -> "myval"
map.put("mykey","myval")
Le fait est que la première ligne de vos codes ne correspond pas à vos attentes. Tu devrais utiliser
val map = scala.collection.mutable.Map[A,B]()
ou
val map = new scala.collection.mutable.Map[A,B]()
au lieu.
scala> val map = scala.collection.mutable.Map[String,String]()
map: scala.collection.mutable.Map[String,String] = Map()
scala> map("k1") = "v1"
scala> map
res1: scala.collection.mutable.Map[String,String] = Map((k1,v1))
scala> map += "k2" -> "v2"
res2: map.type = Map((k1,v1), (k2,v2))
scala> map.put("k3","v3")
res3: Option[String] = None
scala> map
res4: scala.collection.mutable.Map[String,String] = Map((k3,v3), (k1,v1), (k2,v2))
Comme toujours, vous devriez vous demander si vous avez vraiment besoin d'une mutable carte.
Immuable cartes sont triviales à construire:
val map = Map(
"mykey" -> "myval",
"myotherkey" -> "otherval"
)
Mutable cartes ne sont pas différents quand premier construit:
val map = collection.mutable.Map(
"mykey" -> "myval",
"myotherkey" -> "otherval"
)
map += "nextkey" -> "nextval"
Dans ces deux cas, l'inférence sera utilisé pour déterminer les paramètres de type de la Carte de l'instance.
Vous pouvez aussi tenir un immuable de carte en var
, la variable sera alors mis à jour avec une nouvelle immuable carte instance à chaque fois que vous effectuez une "mise à jour"
var map = Map(
"mykey" -> "myval",
"myotherkey" -> "otherval"
)
map += "nextkey" -> "nextval"
Si vous n'avez pas de valeurs initiales, vous pouvez utiliser la Carte.vide:
val map : Map[String, String] = Map.empty //immutable
val map = Map.empty[String,String] //immutable
val map = collection.mutable.Map.empty[String,String] //mutable
Quand tu dis
val map = scala.collection.mutable.Map
vous ne créez pas une instance de carte, mais croyez plutôt le type de carte.
map: collection.mutable.Map.type = scala.collection.mutable.Map$@fae93e
Essayez plutôt ce qui suit:
scala> val map = scala.collection.mutable.Map[String, Int]()
map: scala.collection.mutable.Map[String,Int] = Map()
scala> map("asdf") = 9
scala> map
res6: scala.collection.mutable.Map[String,Int] = Map((asdf,9))
Créer une nouvelle carte immuable:
scala> val m1 = Map("k0" -> "v0")
m1: scala.collection.immutable.Map[String,String] = Map(k0 -> v0)
Ajoutez une nouvelle paire clé / valeur à la carte ci-dessus (et créez une nouvelle carte, car elles sont immuables):
scala> val m2 = m1 + ("k1" -> "v1")
m2: scala.collection.immutable.Map[String,String] = Map(k0 -> v0, k1 -> v1)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.