我可以在
中传递和使用元组中的值for ((v,i) <- in.zipWithIndex) {
println(s"$i is $v")
}
但是在foreach中,它只能像
一样使用in.zipWithIndex.foreach {
case(v, i) => println(s"$i is $v")
}
如何使类似的功能
val f: (Int,Int) => Unit = (v,i) => {println(s"$i is $v")}
,然后将其传递到.foreach()
。 AND (这对我来说很重要),而无需使用模式匹配case
。
P.S。 .tupled
仅适用于方法(def
)。不适用于定义为val
答案 0 :(得分:1)
函数的参数必须为元组。
scala> val l = List(1,2,3).zipWithIndex
l: List[(Int, Int)] = List((1,0), (2,1), (3,2))
scala> val f = (t: (Int, Int)) => println(s"${t._1} ${t._2}")
f: ((Int, Int)) => Unit = <function1>
scala> l.foreach(f)
1 0
2 1
3 2
我个人讨厌._1
,._n
语法,并且更喜欢对元组进行模式匹配。
顺便说一句,您的理解范例也使用模式匹配...