您好,登錄后才能下訂單哦!
1、Curring函數 定義?
將原來接收兩個參數的一個函數,轉換為兩個函數,第一個函數接收原先的第一個參數,然后返回接收原先第二個參數的第二個函數。
在函數調用的過程中,就變為了兩個函數連續調用的形式
在marathon源碼以及Spark的源碼中,也有體現,所以對()()這種形式的Curring函數,要理解。
2、例子:
object CurryingTest { def main(args: Array[String]): Unit = { println("---->:\t" + sum(3,4)) println("---->:\t" + sum2(5)) println("---->:\t" + sum2(5)(1)) // 柯里函數 println("---->:\t" + sum3(4)(8)) } def sum(a: Int, b: Int) = a + b def sum2(a: Int) = (b: Int) => a + b // 由sum函數轉換成sum3函數時的中間過程 def sum3(a: Int)(b: Int) = a + b }
其實,柯里函數到底用在什么場景下,并沒有真正理解。
目前,僅僅是,只要看到
sum3(a: Int)(b: Int) = a + b
這種形式,可以直接理解成 或者等價于
sum(a: Int, b: Int) = a + b
形式
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。