在數學和電腦科學中,柯里化是一種將使用多個引數的一個函式轉換成一系列使用一個引數的函式的技術、
舉個例子:
function add(a, b)
// 執行 add 函式,一次傳入兩個引數即可
add(1, 2) // 3
// 假設有一個 curry 函式可以做到柯里化
var addcurry = curry(add);
addcurry(1)(2) // 3
我們會講到如何寫出這個 curry 函式,並且會將這個 curry 函式寫的很強大,但是在編寫之前,我們需要知道柯里化到底有什麼用?
// 示意而已
function ajax(type, url, data)
// 雖然 ajax 這個函式非常通用,但在重複呼叫的時候引數冗餘
ajax('post', 'www.test.com', "name=kevin")
ajax('post', 'www.test2.com', "name=kevin")
ajax('post', 'www.test3.com', "name=kevin")
// 利用 curry
var ajaxcurry = curry(ajax);
// 以 post 型別請求資料
var post = ajaxcurry('post');
post('www.test.com', "name=kevin");
// 以 post 型別請求來自於 www.test.com 的資料
var postfromtest = post('www.test.com');
postfromtest("name=kevin");
curry 的這種用途可以理解為:引數複用。本質上是降低通用性,提高適用性。
var prop = curry(function (key, obj) );
var name = person.map(prop('name'))
柯里化與反柯里化
柯里化,可以理解為提前接收部分引數,延遲執行,不立即輸出結果,而是返回一個接受剩餘引數的函式。因為這樣的特性,也被稱為部分計算函式。柯里化,...
JS 柯里化
柯里化 是把接受多個引數的函式變換成接受一個單一引數 最初函式的第一個引數 的函式,並且返回接受餘下的引數而且返回結果的新函式的技術。其實,...
函式柯里化
1 什麼是柯里化 從一個普通函式得到一個柯里化函式的過程叫做函式的柯里化,返回的函式稱為經過柯里化的函式。 函式柯里化的技術來自於一種程式設...