在scala中使用部分应用函数有哪些应用/优点?

Moh*_*lla 2 scala partial-application

我们在Scala中部分应用了函数 -

def sum(a:Int,b:Int,c:Int) = a+b+c

val partial1 = sum(1,_:Int,8)
Run Code Online (Sandbox Code Playgroud)

我想知道使用部分应用函数有什么好处.或者它只是一个语法上的添加?

Von*_*onC 5

关于部分应用的功能,一般来说," Scala编程,第2版 "一书提到:

考虑这种表达式的另一种方法是将下划线转换为函数值,其中下划线用于表示整个参数列表.
例如,如果您有一个本地函数,例如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>
Run Code Online (Sandbox Code Playgroud)

(这里a(1, 2, 3)是一个简短形式:

scala> a.apply(1, 2, 3)
res12: Int = 6
Run Code Online (Sandbox Code Playgroud)

)

虽然您不能将方法或嵌套函数分配给变量,或者将其作为参数传递给另一个函数,但是如果通过在其名称后面放置下划线将方法或嵌套函数包装在函数值中,则可以执行这些操作.