scala中的柯里化

2021-09-25 17:05:22 字數 1005 閱讀 5605

先看看百科當中的關於柯里化的介紹

在電腦科學中,柯里化(英語:currying),又譯為卡瑞化或加里化,是把接受多個引數的函式變換成接受乙個單一引數(最初函式的第乙個引數)的函式,並且返回接受餘下的引數而且返回結果的新函式的技術。

在直覺上,柯里化聲稱「如果你固定某些引數,你將得到接受餘下引數的乙個函式」。所以對於有兩個變數的函式 y x } y^,如果固定了 y = 2 y=2,則得到有乙個變數的函式 2 x } 2^。

接著看看scala當中的柯里化

看如下**:

需求:實現兩個引數相加

//普通方法1 引數為兩個的方法

def method1(x:int,y:int):int=

//呼叫

val i1: int = method1(1,2)

println(i1)

//普通方法2 引數為乙個的方法

def method2(x:int):int=>int= //返回乙個int=>int型別函式

}val inttoint2: int => int = method2(1)

val i2: int = inttoint2(2) //呼叫返回的函式

println(i2)

//柯里化的方法

def method(x:int)(y:int):int=

//呼叫方式一

val i4: int = method(1)(2)

println(i4)

//呼叫方式二

val inttoint: int => int = method(1) //返回乙個

val i3: int = inttoint(2)

println(i3)

普通方法一 必須輸入兩個引數才能得到結果

普通方法二可以實現百科中柯里化的效果 但是只能依次呼叫獲取函式輸出結果

柯里化方法可以兩個引數一起傳遞得到結果 也可以傳乙個引數得函式

實際上就是方法二的乙個簡化,使得函式呼叫更加靈活。

Scala中的柯里化

柯里化 currying 技術 christopher strachey 以邏輯學家 haskell curry 命名的 儘管它是 moses schnfinkel 和 gottlob frege 發明的 它是 把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘...

Scala柯里化和反柯里化

名詞解釋 在電腦科學中,柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。柯里化舉例說明 def curry1 a,b,c a a,f a,b c b c b b f a,b 這個函式的結果是乙個高階...

Scala學習筆記 Scala中的柯里化

柯里化的意義 一 提高程式效能,而是使 模組化,減少耦合增強其可維護性。二 函式的通用性有所降低,但是適用性有所提高。沒使用語法糖的 sum 函式 def sum f int int int,int int 使用語法糖後的 sum 函式 def sum f int int a int,b int i...