如何foreachWithIndex
在 Scala 集合上添加方法?
到目前为止,这是我能想到的:
implicit def iforeach[A, CC <: TraversableLike[A, CC]](coll: CC) = new {
def foreachWithIndex[B](f: (A, Int) => B): Unit = {
var i = 0
for (c <- coll) {
f(c, i)
i += 1
}
}
}
这不起作用:
Vector(9, 11, 34).foreachWithIndex { (el, i) =>
println(el, i)
}
引发以下错误:
error: value foreachWithIndex is not a member of scala.collection.immutable.Vector[Int]
Vector(9, 11, 34).foreachWithIndex { (el, i) =>
但是,当我明确应用转换方法时,代码可以工作:
iforeach[Int, Vector[Int]](Vector(9, 11, 34)).foreachWithIndex { (el, i) =>
println(el, i)
}
输出:
(9,0)
(11,1)
(34,2)
如何在不显式应用转换方法的情况下使其工作?谢谢。