Ich bekam einen Fehler, als ich Code wie foo.map(case Foobar(x,y) => something)
schrieb. Später habe ich entdeckt, dass ich Klammer Klammern verwenden muss, um die anonyme Funktion (case Foobar(x,y) => something
) zu wickeln. Nachfolgend finden Sie eine Demo von der scala REPL:Warum ist Klammer Klammer in Arity-1 Methode Aufruf erforderlich?
scala> val a = List(((1, 2),3), ((4,5),6))
a: List[((Int, Int), Int)] = List(((1,2),3), ((4,5),6))
scala> a.map({case ((a,b),c) => (a,b,c)})
res0: List[(Int, Int, Int)] = List((1,2,3), (4,5,6))
scala> a.map(case ((a,b),c) => (a,b,c))
<console>:1: error: illegal start of simple expression
a.map(case ((a,b),c) => (a,b,c))
Beachten Sie, dass die Klammer Klammern oben in dem letzten Befehl im Vergleich zu der entfernt werden.
Also, was ist der Grund für dieses Verhalten? Warum kann der Scala-Compiler die anonyme Funktion nicht ohne die geschweiften Klammern ableiten?
Das allein gleiten macht mich zu Dotty wechseln wollen ... –
Ja, wird Dotty sein wirklich großartig. Bald! –
Wenn ich schlau genug wäre, etwas beizutragen, würde ich definitiv ... –