92

これについてかなりの数の質問があったことは知っていますが、うまくいくはずだと思った簡単な例を作成しましたが、それでもうまくいかず、理由を理解しているかどうかわかりません

val myStrings = new Array[String](3)
// do some string initialization

// this works
myStrings.foreach(println(_))


// ERROR: missing parameter type for expanded function
myStrings.foreach(println(_.toString))

2番目のステートメントがコンパイルされない理由を誰かが説明できますか?

4

1 に答える 1

123

次のように展開されます。

myStrings.foreach(println(x => x.toString))

あなたがしたい:

myStrings.foreach(x => println(x.toString))

無名関数のプレースホルダー構文は、可能な限り最小の包含式を関数に置き換えます。

于 2011-10-02T15:09:48.513 に答える