Currying是什麼

最近看的Haskell提到這個。
stackoverflow有個回答比較簡單易懂。
Currying就是把一個帶有多個參數的函數拆分成一系列帶部分參數的函數。
看一下JavaScript中的例子:

function add (a, b) {
  return a + b;
}

使用

add(3, 4); returns 7

這個函數有兩個參數a和b,返回它們的值。curry這個函數。

function add (a) {
  return function (b) {
    return a + b;
  }
}

這回,這個函數只帶有一個參數,返回一個帶有參數b的函數,然後這個函數返回a,b的和。

add(3)(4);

var add3 = add(3);

add3(4);

第一句話返回7,和add(3, 4) 效果一樣。
第二句話定義了一個新函數add3,它的參數爲3(閉包),之後使用add3來加上4,同樣結果爲7。

發佈了52 篇原創文章 · 獲贊 51 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章