1. 程式人生 > >合抱之木,生於豪末。A New World

合抱之木,生於豪末。A New World

柯里化是把接受多個引數的函式變換成接受一個單一引數(最初函式的第一個引數)的函式, 並且返回接受餘下的引數而且返回結果的新函式的技術。

柯里化其實本身是固定一個可以預期的引數,並返回一個特定的函式,處理批特定的需求。這增加了函式的適用性,但同時也降低了函式的適用範圍。

object cury_func {
  def plainOldSum(x:Int,y:Int)= x + y  //非柯里化函式定義
  def curriedSum(x:Int)(y:Int)= x + y  //柯里化使用多個引數列表

  def main(args:Array[String]): Unit ={
    println(plainOldSum(1
,5)) println(curriedSum(2)(8)) /*當你呼叫curriedSum (2)(8)時,實際上是依次呼叫兩個普通函式(非柯里化函式), 第一次呼叫使用一個引數x,返回一個函式型別的值,第二次使用引數y呼叫這個函式型別的值*/ //等價於: def first(x:Int) = (y:Int)=> x+y val second=first(2) //柯里化函式呼叫過程 val res=second(8) println(res) //通過柯里函式curriedSum定義變數 val onePlus=curriedSum(1
)_ //_ 第二個引數列表的佔位符, println(onePlus(2)) //傳入的是第二個引數 } }