Подчеркивание Scala: ошибка: отсутствует тип параметра для расширенной функции

Недавно я начал изучать 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), Я просто не знаю, почему компилятор знает, как компилировать второй случай, но не третий. Кроме того, есть ли способ разрешить последний случай без написания явной функции?

0 ответов

Другие вопросы по тегам