Как повторить карту scala?


у меня есть карта scala:

attrs: Map[String , String]

когда я пытаюсь перебирать карту, как;

attrs.foreach { key, value =>     }

выше не работает. В каждой итерации я должен знать, что такое ключ и что такое значение. Что такое правильный способ, чтобы выполнить итерации по карте, используя скала скала синтаксический сахар?

2 77

2 ответа:

foreach метод получает Tuple2[String, String] как аргумент, а не 2 аргумента. Так что вы можете использовать его как кортеж:

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

или вы можете сделать шаблону:

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

три варианта:

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

хитрость заключается в том, что итерация дает вам пары ключ-значение, которые вы не можете разделить на имя идентификатора ключа и значения без использования case или for.