非常方便的Ruby代码:
some_map.each do |key,value|
# do something with key or value
end
Run Code Online (Sandbox Code Playgroud)
Scala等价物:
someMap.foreach( entry => {
val (key,value) = entry
// do something with key or value
})
Run Code Online (Sandbox Code Playgroud)
不得不添加额外的val行错误我.我无法弄清楚如何声明函数arg来提取元组,所以我想知道有没有办法做到这一点,或者为什么没有foreach为我提取关键和值?
sep*_*p2k 19
这也有效:
someMap.foreach {case (key, value) =>
// do something with key and/or value
}
Run Code Online (Sandbox Code Playgroud)
Vik*_*ang 11
我喜欢这一个:
scala> val foo = Map( 1 -> "goo", 2 -> "boo" )
foo: scala.collection.immutable.Map[Int,java.lang.String] = Map(1 -> goo, 2 -> boo)
scala> for ((k,v) <- foo) println(k + " " + v)
1 goo
2 boo
Run Code Online (Sandbox Code Playgroud)
你甚至不需要valin for循环:
以下是ViktorKlang的例子:
scala> val foo = Map( 1 -> "goo", 2 -> "boo" )
foo: scala.collection.immutable.Map[Int,java.lang.String] = Map(1 -> goo, 2 -> boo)
scala> for ((k, v) <- foo) println(k + " " + v)
1 goo
2 boo
Run Code Online (Sandbox Code Playgroud)
请注意,for在Scala中相当强大,因此您也可以将它用于序列理解:
scala> val bar = for (val (k, v) <- foo) yield k
bar: Iterable[Int] = ArrayBuffer(1, 2)
Run Code Online (Sandbox Code Playgroud)