我最近开始学习 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(_)
论坛里问了几个类似的案例(也就是这个),大部分都说是扩展成这样的匿名函数x => randomList.groupBy(x)
。我只是不知道为什么编译器知道如何编译第二种情况而不是第三种情况。另外,有没有办法在不编写显式函数的情况下解决最后一种情况?