Pregunta Cómo iterar Scala Map?


Tengo un mapa scala:

attrs: Map[String , String]

Cuando trato de iterar sobre un 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?


75
2018-06-15 21:13


origen


Respuestas:


foreach método recibe Tuple2[String, String] como argumento, no 2 argumentos. Entonces puedes usarlo como tupla:

attrs.foreach {keyVal => println(keyVal._1 + "=" + keyVal._2)}

o puedes hacer coincidir el patrón:

attrs.foreach {case(key, value) => ...}

70
2018-06-15 21:19



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 te da pares clave-valor, que no puedes dividir en una clave y un nombre identificador de valor sin usar cualquiera case o for.


138
2018-06-15 21:17