Ответ 1
Это не легко увидеть здесь:
a.groupBy(_)
Но легче видеть это примерно так:
a.mkString("<", _, ">")
Я частично применяю метод/функцию. Я применяю его к некоторым параметрам (первый и последний) и оставляя второй параметр непримененным, поэтому я получаю новую функцию следующим образом:
x => a.mkString("<", x, ">")
Первый пример - это особый случай, когда частично применяется единственный параметр. Однако, когда вы используете подчеркивание в выражении, это означает позиционные параметры в анонимной функции.
a.mapValues(_.size)
a.mapValues(x => x.size)
Легко запутаться, потому что они оба приводят к анонимной функции. На самом деле есть третий знак подчеркивания, который используется для преобразования метода в значение метода (которое также является анонимной функцией), например:
a.groupBy _