Welche Regeln gelten für das Unterstreichen, um anonyme Funktionen zu definieren?

Ich benutze_ als Platzhalter für die Erstellung anonymer Funktionen, und das Problem ist, dass ich nicht vorhersagen kann, wie Scala meinen Code umwandeln wird. Genauer gesagt, es wird fälschlicherweise bestimmt, wie "groß" die von mir gewünschte anonyme Funktion ist.

 List(1,2,3) foreach println(_:Int)   //error !
 List(1,2,3) foreach (println(_:Int)) //work
 List(1,2,3) foreach(println(_:Int))  //work

Using-Xprint:typer Ich kann sehen, dass Scala die erste Funktion in "eine große anonyme Funktion" umwandelt:

x$1 => List(1,2,3) foreach(println(x$1:Int))

the arbeitete 2. 3. sindrichti Transformation in das, was ich will.

... foreach (x$1 => println(x$1:Int)) 

Warum das? Was ist die Regel

Antworten auf die Frage(4)

Ihre Antwort auf die Frage