Mam mapę Scala:
attrs: Map[String , String]
Kiedy próbuję iterować po mapie, jak;
attrs.foreach { key, value => }
powyższe nie działa. W każdej iteracji muszę wiedzieć, jaki jest klucz i jaka jest wartość. Jaki jest właściwy sposób iteracji mapy łuski przy użyciu cukru syntaktycznego łuski?
Trzy opcje:
attrs.foreach( kv => ... ) // kv._1 is the key, kv._2 is the value attrs.foreach{ case (k,v) => ... } // k is the key, v is the value for ((k,v) <- attrs) { ... } // k is the key, v is the value
Sztuczka polega na tym, że iteracja daje pary klucz-wartość, których nie można podzielić na klucz i nazwę identyfikatora wartości bez użycia
case
lubfor
.źródło
Dodałem więcej sposobów iteracji wartości map.
// Traversing a Map def printMapValue(map: collection.mutable.Map[String, String]): Unit = { // foreach and tuples map.foreach( mapValue => println(mapValue._1 +" : "+ mapValue._2)) // foreach and case map.foreach{ case (key, value) => println(s"$key : $value") } // for loop for ((key,value) <- map) println(s"$key : $value") // using keys map.keys.foreach( key => println(key + " : "+map.get(key))) // using values map.values.foreach( value => println(value)) }
źródło