我最近开始学习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),他们中的大多数人都说这扩展到了像x => randomList.groupBy(x)
这样的匿名函数。我只是不知道为什么编译器知道如何编译第二种情况而不是第三种情况。另外,有没有办法在不编写显式函数的情况下解决最后一种情况?