О частично примененной функции в целом в книге " Программирование на Scala, 2-е издание " упоминается:
Еще один способ думать об этом виде выражения, в котором подчеркивание
используется для представления всего списка параметров, как способ преобразования
def в значение функции .
Например, если у вас есть локальная функция, такая как sum(a: Int, b: Int, c: Int): Int
, вы можете «обернуть» ее в значение функции, метод apply которой имеет тот же список параметров и типы результатов.
scala> def sum(a: Int, b: Int, c: Int) = a + b + c
sum: (a: Int,b: Int,c: Int)Int
scala> val a = sum _
a: (Int, Int, Int) => Int = <function3>
(Здесь a(1, 2, 3)
- это краткая форма для:
scala> a.apply(1, 2, 3)
res12: Int = 6
)
Хотя вы не можете присвоить метод или вложенную функцию переменной или передать ее в качестве аргумента другой функции, вы можете сделать это, если вы поместите метод или вложенную функцию в значение функции, поместив подчеркивание после его имени.