任何想法为什么以下不起作用?
implicit def listExtensions[A](xs : List[A]) = new ListExtensions(xs)
class ListExtensions[A](xs : List[A])
{
def foreach[B](f: (A, Int) => B)
{
var i = 0;
for (el <- xs)
{
f(el, i);
i += 1;
}
}
}
var a = List(1, 2, 3);
a foreach { (el, i) => println(el, i) };
当我使用 fsc 2.8.1 编译它时,我收到以下错误:“参数数量错误;预期 = 1: a foreach { (el, i) => println(el, i) };”。我是在做错什么,还是根本没有办法通过“pimp my library”技巧来添加重载方法?
PS 我想知道的不是实现 foreach 的 iterate-with-current-index 风格(我知道 zipWithIndex 方法),而是想知道重载和隐式转换如何一起发挥作用。