How to add foreachWithIndex method to Scala collection?
This is what I could come up with so far:
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 } } }
This does not work:
Vector(9, 11, 34).foreachWithIndex { (el, i) => println(el, i) }
It raises the following error:
error: value foreachWithIndex is not a member of scala.collection.immutable.Vector[Int] Vector(9, 11, 34).foreachWithIndex { (el, i) =>
However, the code works when I explicitly apply the conversion method:
iforeach[Int, Vector[Int]](Vector(9, 11, 34)).foreachWithIndex { (el, i) => println(el, i) }
Output:
(9,0) (11,1) (34,2)
How to make it work without explicitly applying the conversion method? Thanks.