Irgendwelche Ideen, warum funktioniert das folgende nicht?scala: pimp meine Bibliothek mit Überladungen
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) };
Als ich das kompilieren mit fsc 2.8.1, bekomme ich folgende Fehlermeldung: „falsche Anzahl von Parametern; expected = 1: eine foreach {(el, i) => println (el, i)} ". Mache ich etwas falsch oder gibt es einfach keine Möglichkeit, eine überladene Methode mit dem Trick "pimp my library" hinzuzufügen?
P.S. Ich frage mich nicht, ob ich die iterate-with-current-index-Variante von foreach implementieren soll (ich kenne die zipWithIndex-Methode), sondern vielmehr, wie Überladung und implizite Konvertierungen zusammenspielen.
möglich Duplikat [Aufschalten arithmetischen Operatoren auf Int über implizite Konvertierungen] foreachWithIndex (http://stackoverflow.com/questions/4443783/overriding-arithmetic-operators-on -int-via-implizite-Konvertierungen –