Tengo mapa scala:
attrs: Map[String , String]
Cuando trato de iterar sobre el mapa como;
attrs.foreach { key, value => }
lo anterior no funciona. En cada iteración debo saber cuál es la clave y cuál es el valor. ¿Cuál es la forma correcta de iterar sobre scala map usando scala syntactic sugar?
Tres opciones:
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
El truco es que la iteración le brinda pares clave-valor, que no puede dividir en un nombre de identificador de clave y valor sin usar
case
ofor
.fuente
He agregado algunas formas más de iterar los valores del mapa.
// 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)) }
fuente