Frage Wie scala map iterieren?


Ich habe eine Scala Map:

attrs: Map[String , String]

Wenn ich versuche, über Map zu iterieren;

attrs.foreach { key, value =>     }

das obige funktioniert nicht. In jeder Iteration muss ich wissen, was der Schlüssel ist und was der Wert ist. Was ist der richtige Weg, um über Scala Map mit Scala syntaktischen Zucker zu iterieren?


75
2018-06-15 21:13


Ursprung


Antworten:


foreach Methode empfängt Tuple2[String, String] als Argument, nicht 2 Argumente. Sie können es also wie ein Tupel verwenden:

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

oder Sie können Muster passend machen:

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

70
2018-06-15 21:19



Drei Optionen:

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

Der Trick besteht darin, dass die Iteration Ihnen Schlüssel / Wert-Paare liefert, die Sie nicht in einen Schlüssel- und Wertbezeichnernamen aufteilen können, ohne sie zu verwenden case oder for.


138
2018-06-15 21:17