偏應用函數
有時候一個函數在特殊應用場景下部分參數可能會始終取相同的值,爲了避免每次都提供這些相同的值,我們可以用該函數來定義一個新的函數。
若保留部分參數,則使用 _:參數類型 代表;注意參數類型必須標記;
若保留全部參數,則使用 函數名 _ 進行函數賦值,注意函數名後面有空格。
@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