js 函式柯里化(Currying)

2022-07-01 02:12:13 字數 1468 閱讀 3411

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

題目:使用 js 實現 add(1)(2)(3)(4) 返回 10

函式柯里化要求多個引數轉為單一引數,所以相當於

function add() 

// 呼叫:add(1, 2, 3, 4) => [1, 2, 3, 4]

// 轉換為下面形式

function addcurrying()

// 呼叫:addcurrying(1)(2)(3)(4) => [1, 2, 3, 4]

閉包:定義在乙個函式內部的函式,靜態儲存所有了父級作用域的內部函式。所以每次的值可以儲存住,到了最後可以全部訪問到

所以,我們先來乙個閉包來拿取到所有引數

var add = function (value) ;

// 此方法呼叫返回陣列

_add.getresult = function () ;

return _add;

};

這樣通過上面函式就可以實現基本的柯里化要求

執行:

// addcurrying(1)(2)(3)(4).getresult => [1, 2, 3, 4]

// addcurrying(1)(2)(3)(4)

// =>

/*ƒ (value2)

*/

上面的**雖然已經獲取到所有的引數,但是返回結果並沒有自動返回,而是需要呼叫函式才返回。

並且由於不知道引數長度,也就無法通過引數陣列長度來及時返回結果。

那麼有什麼方法可以解決呢?

js 函式的柯里化 Currying

1.詳解js函式柯里化 2.函式式編的js curry 維基百科上說道 柯里化,英語 currying 果然是滿滿的英譯中的既視感 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數而且返回結果的新函式的技術。舉例 普通的add函式 function ...

Scala 函式柯里化 Currying

柯里化 currying 指的是將原來接受兩個引數的函式變成新的接受乙個引數的函式的過程。新的函式返回乙個以原有第二個引數為引數的函式。例項 首先我們定義乙個函式 def add x int,y int x y那麼我們應用的時候,應該是這樣用 add 1,2 現在我們把這個函式變一下形 def ad...

scala 柯里化(Currying)函式

首先看乙個簡單的案例 原函式 傳入兩個引數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由此可...