2

最近、scala の学習を始めましたが、アンダースコアのしくみに少し戸惑いました。ほとんどの場合、便利な匿名メソッドを提供しますが、コンパイラ (および私) を混乱させるだけの場合もあります。

例えば、

これは機能します

val randomList = List(1,2,3)
randomList.groupBy(x => x)

この

val randomList = List(1,2,3)
randomList.groupBy(_ + 1)

しかし、これではありません

val randomList = List(1,2,3)
randomList.groupBy(_)

error: missing parameter type for expanded function ((x$1) =>  randomList.groupBy(x$1))
          randomList.groupBy(_)

いくつかの同様のケースがフォーラムで質問されています (つまり、 this one )。それらのほとんどは、これが this のような無名関数に拡張されていると述べていますx => randomList.groupBy(x)。コンパイラが2番目のケースをコンパイルする方法を知っているのに、3番目のケースを知らない理由がわかりません。また、明示的な関数を書かずに最後のケースを解決する方法はありますか?

4

0 に答える 0