偏应用函数
有时候一个函数在特殊应用场景下部分参数可能会始终取相同的值,为了避免每次都提供这些相同的值,我们可以用该函数来定义一个新的函数。
若保留部分参数,则使用 _:参数类型 代表;注意参数类型必须标记;
若保留全部参数,则使用 函数名 _ 进行函数赋值,注意函数名后面有空格。
@Test
def testAppFunc(): Unit = {
/**
* 测试偏应用函数
*/
def sum(a: Int, b: Int, c: Int): Int = {
a + b + c
}
println(sum(1, 2, 3))
// 保留部分参数
val appFunc = sum(1, _: Int, _: Int)
println(appFunc(1, 2))
// 保留全部参数
val appFunc1 = sum _
println(appFunc1(1, 2, 3))
}
输出结果
6
4
6
Curry化函数
Curry化的函数是指那种带有多个参数列表且每个参数列表只包含一个参数的函数。
@Test
def testCurry(): Unit ={
def multi(x:Int)(y:Int): Int ={
x*y
}
println(multi(3)(8))
// 保留部分参数
val curryFuc=multi(3)_
println(curryFuc(8))
// 保留全部参数
val curryFuc1=multi _
println(curryFuc1(3)(8))
}
输出结果
24
24
24