相当多Map的函数在一个键值元组上作为参数.例如def foreach(f: ((A, B)) ? Unit): Unit.所以我找了一个简短的方法来写一个参数foreach:
> val map = Map(1 -> 2, 3 -> 4)
map: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2, 3 -> 4)
> map.foreach((k, v) => println(k))
error: wrong number of parameters; expected = 1
map.foreach((k, v) => println(k))
^
> map.foreach({(k, v) => println(k)})
error: wrong number of parameters; expected = 1
map.foreach({(k, v) => println(k)})
^
> map.foreach(case (k, v) => println(k))
error: illegal start of simple expression
map.foreach(case (k, v) => println(k))
^
Run Code Online (Sandbox Code Playgroud)
我可以
> map.foreach(_ match {case (k, v) => println(k)})
1
3
Run Code Online (Sandbox Code Playgroud)
有更好的选择吗?
Ben*_*ngs 46
你非常接近map.foreach(case (k, v) => println(k)).要case在匿名函数中使用,请用大括号括起来.
map foreach { case (k, v) => println(k) }
Run Code Online (Sandbox Code Playgroud)
mkn*_*ssl 13
在这种情况下,我经常使用for语法.
for ((k,v) <- map) println(k)
Run Code Online (Sandbox Code Playgroud)
根据"Scala编程"中的第23章,上面的for循环被转换为call foreach.
一种替代tupled方法是Function对象的方法:
import Function.tupled;
// map tupled foreach {(k, v) => println(k)}
map foreach tupled {(k, v) => println(k)}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7011 次 |
| 最近记录: |