1
Ich schrieb map1
Funktion ähnlich List.map
wie:Was mit der Verwendung von Lambda falsch ist hier
def map1[A, B](xs: List[A], f: A => B): List[B] = {
xs match {
case List() => scala.collection.immutable.Nil
case head :: tail => f(head) :: map1(tail, f)
}
}
Nun, wenn ich die oben rufen:
map1(List(1, 2, 3), x => x + 1)
Ich bekomme Fehler wie: error: missing parameter type
. Aber folgende Arbeiten:
List(1, 2, 3).map(x => x + 1)
Warum map1
nicht mit lamdas arbeiten?
Es ist kein Lambda-Problem, da dies funktioniert '(x: Int) => x + 1 '. Es ist ein Problem mit der Typ-Inferenz-Engine. – jwvh
Inferenz-Problem: Typ "A" kann für "f" von "xs" wie in der gleichen Parameterliste abgeleitet werden – cchantep