web-dev-qa-db-ja.com

Scalaアンダースコア-エラー:拡張機能のパラメータタイプがありません

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

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番目のステートメントがコンパイルされない理由を説明できますか?

80
Jeff Storey

以下に展開されます。

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

あなたが欲しい:

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

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

105
retronym