Die folgende:Warum kompiliert diese Teilanwendung nicht?
object a1 extends Function1[Int, Int] {
def apply(x: Int): Int = {
add(x, 3)
}
}
Aber wenn ich das tue:
object add extends Function2[Int, Int, Int] {
def apply(a: Int, b: Int) = a + b
}
während
val a1 = add(_: Int, 3)
an wird
umgewandelt:
val add = (a: Int, b: Int) => a + b
umgewandelt wird
scala> val a2 = add _
a2:() => (Int, Int) => Int = <function0>
Und dann a2
nennen, wirft er einen Fehler:
scala> a2(1, 2)
<console>:11: error: too many arguments for method apply:()(Int, Int) => Int in trait Function0
a2(1, 2)
^
Warum ist das? Warum funktioniert das Folgende?
a2()(1, 2)