首先看乙個簡單的案例:
//原函式 傳入兩個引數x,y 求和
def add
(x:int,y:int)
=x*y+y
//柯里化函式 每次傳入乙個引數,先傳入x,再傳入y 求和
def add1
(x:int)
(y:int)
=x*y+y
//原函式呼叫
add(10,
1)//11
//柯里化函式呼叫
add1(10
)(1)
//11
由此可見,柯里化函式就是把一次傳入多個引數的函式拆分為每次都傳入單個引數的函式,並且多次傳入參。
那為什麼add(x,y)變成add1(x)(y)就實現了柯里化呢?
函式柯里化(currying):將原來接受多個引數的函式變成新的接受乙個引數的函式的過程。新的函式返回乙個以原有函式的第二個引數為引數的函式。
add1(x)(y)怎麼運作的?以add2函式做說明。
//實現建立add1的柯里化方法 傳入第乙個引數時返回函式型別,傳入第二引數才返回計算值
def add2
(x:int)=}
add2(10
)//function
add2(10
)(1)
//11
add2(x)返回的是乙個函式,這個返回的函式引數是int型,我們知道呼叫函式需要通過fun(引數)來實現,所以add2(x)(y)就是在add2(x)返回的新函式的基礎上又傳入引數y來呼叫新函式的。這就解釋上面add1(x)(y)依次傳入兩個引數就實現柯里化。 Scala柯里化和反柯里化
名詞解釋 在電腦科學中,柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。柯里化舉例說明 def curry1 a,b,c a a,f a,b c b c b b f a,b 這個函式的結果是乙個高階...
scala之柯里化
scala中可以定義乙個函式 1.柯里化,注意cookfood與cookfood1 cookfood2是同乙個方法,但是引數展示的形式被分開,這就是柯里化。def cookfood potato string,tomato string,cook string unit unit def cookf...
Scala 函式柯里化
柯里化指的是將原來接受多個引數的函式變成新的接受乙個引數的函式的過程,新函式的引數接受原來的第二個引數為唯一引數,如果有n個引數,就是把這個函式分解成n個新函式的過程 1 函式程式設計中,接受多個引數的函式都可以轉化為接受單個引數的函式,這個轉化過程就叫柯里化 2 柯里化就是證明了函式只需要乙個引數...