これをここで質問するか、 Programmersで質問するかはわかりませんでしたが、とにかく
Scala では、中置構文を使用してメソッド呼び出しを記述することができます。つまり、ドットと括弧を省略できます。
例として、これを行うことができます:
lst foreach println // equivalent to lst.foreach(println)
lst map _.toString
当然のことながら、は に評価されると想定されますlst.map(_.toString)
。これは、lst.map(x$1 => x$1.toString)
しかしlst map _.toString
、repl に落とし込むと驚くべき結果が得られ((x$1) => sList.map(x$1.toString))
、メソッド呼び出しが誤動作する原因と評価されます。
では、それはなぜでしょうか。a.f(b)
と同等であるという単純なルールがa f b
、書くときに適用されなくなったのはなぜa f _.b
ですか?