"Разрушение" Map.Entry в закрытии Scala - PullRequest
7 голосов
/ 07 февраля 2011
val m: java.util.Map[String, Int] = ...
m.foreach { entry =>
  val (key, value) = entry
  // do stuff with key and value
}

Есть ли лучший способ деструктурировать Map.Entry?Я попробовал следующее, но оно не компилируется:

m.foreach { (key, value) =>
  // do stuff with key and value
}

Ответы [ 2 ]

21 голосов
/ 07 февраля 2011

Если вы готовы сделать для понимания, мне нравится:

for((key, value) <- m) println(key, value)

но если вы хотите сделать m.foreach, мне нравится

 m.foreach{ case (key, value) => println(key, value) }
1 голос
/ 06 мая 2017

Это отвечает на связанный с этим вопрос: как преобразовать итератор Java (в данном случае через java.util.Map.Entry) в итератор Scala.

import scala.collection.JavaConverters._
import com.fasterxml.jackson.core.JsonFactory
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.node.{JsonNodeFactory, MissingNode, ObjectNode}

val jf = new JsonFactory(true)
val o = new ObjectNode(jf)
o.put("yellow","banana")

for (v <- o.fields.asScala) { println(v.getKey(),v.getValue()) }

это выводит

(yellow,"banana")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...