js函式式程式設計之柯里化(curry)

2021-09-21 07:34:32 字數 955 閱讀 1140

curry概念: 只傳遞給函式一部分引數來呼叫它,讓它返回乙個函式去處理剩下的引數。

你可以一次性地呼叫curry函式,也可以每次只傳乙個引數分多次呼叫。

var add = function(x) ;

};var increment = add(1);

var addten = add(10);

increment(2);

// 3

addten(2);

// 12

面試有可能會遇到類似add(2)(3)(4, 5) = 14這種問題,其實就應用了柯里化

我們來實現一版最簡單的:

var curry = function(fn) 

}

我們可以這樣使用:

function add(a, b) 

// 用法1

var addcurry = curry(add, 1, 2);

addcurry(); // 3

// 用法2

var addcurry = curry(add, 1);

addcurry(2); // 3

// 用法3

var addcurry = curry(add);

addcurry(1, 2) // 3

但這種還是不能解決add(2)(3)(4, 5)  = 14

我們繼續實現一版:

var curry = function(fn, args) else }}

下面就可以利用這個函式解決add(2)(3)(4, 5)的問題了:

函式式程式設計之柯里化(curry)

函式式程式設計curry的概念 只傳遞給函式一部分引數來呼叫函式,然後返回乙個函式去處理剩下的引數。var add function x var increment add 1 increment 1 2 var addten add 10 addten 10 20 我們可以一次性的呼叫函式,也可以...

js的函式式程式設計 柯里化

currying 為實現多參函式提供了乙個遞迴降解的實現思路 把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數而且返回結果的新函式,在某些程式語言中 如 haskell 是通過 currying 技術支援多參函式這一語言特性的。所以 currying ...

F 函式式程式設計之 柯里化 currying

即使沒有專門學習過函式式的人也有可能聽說過傳說中的柯里化 currying 這是乙個比較 出圈 的概念,也是函式式程式設計的重要特性之一。我會從最簡單的情況開始講述,剛開始你可能覺得無聊,但隨著函式的演化,事情會開始變得有趣。下面請看乙個正常的 f 函式 let add x y x y let th...