Есть идеи, почему следующее не работает?
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)};». Я что-то делаю не так или просто нет способа добавить перегруженный метод с помощью трюка «прокачать мою библиотеку»?
P.S. Меня интересует не реализация вкуса foreach итерация с текущим индексом (я знаю о методе zipWithIndex), а скорее то, как работают вместе перегрузка и неявные преобразования.