Ich bin noch lernen Scala, aber ich glaube, was passiert ist, dass Sie eine partielle Funktion definiert haben, die ein Argument. Beim Aufrufen von Methoden wie List.map oder List.foreach, die nur ein Argument benötigen, können Sie den Unterstrich oder den Namen val weglassen.
Beispiel für die Auslassung des Val-Namens im Abschluss:
val v = List("HEY!", "BYE!")
v.foreach { Console.println } // Pass partial function, automatically
Dies ist dasselbe wie:
val v = List("HEY!", "BYE!")
v.foreach { Console.println _ } // Pass partial function, explicitly
Die Verwendung des anonymen val:
val v = List("HEY!", "BYE!")
v.foreach { Console.println(_) } // Refer to anonymous param, explicitly
Oder Sie verwenden einen benannten Wert:
val v = List("HEY!", "BYE!")
v.foreach { x => Console.println(x) } // Refer to val, explicitly
In Ihrer Schließung verwenden Sie eine Teilfunktion (die case-Anweisung), die eine anonyme Variable nimmt und sie sofort in ein Tupel verwandelt, das an zwei separate Variablen gebunden ist.
Ich glaube, ich habe mich bei einem der obigen Ausschnitte vertan. Wenn ich zu meinem Arbeitscomputer komme, werde ich das in der REPL überprüfen.
Werfen Sie auch einen Blick auf Funktion Currying in Scala für einige weitere Informationen.