簡體   English   中英

添加多個變量作為參數傳遞給函數柯里化

[英]Add multiple variable passed as parameter to function currying

如何使用函數柯里化來實現這些場景?

add(3,4)(3)
add(3)(4)(3)
add(3)(4,3)

我讀了很多博客都找不到這種場景。 有人可以幫我解決這個問題嗎?

像這樣的東西?

 var total = 0; function add(){ // Add up every argument received for (var i in arguments) total += arguments[i]; return add; } add(3,4)(3); console.log(total); add(3)(4)(3); console.log(total); add(3)(4,3); console.log(total);

更新

如果不希望函數依賴於全局變量,則將該值保存為add函數的屬性

 function add(){ // Add up every argument received for (var i in arguments) add.total += arguments[i]; return add; } add.total = 0; add.toString = function(){ var total = add.total; add.total = 0; return total; }; var sum1 = add(3,4)(3); alert( sum1 ); var sum2 = add(3)(4)(3); alert( sum2 ); var sum3 = add(3)(4,3); alert( sum3 );

我在這里看到兩個柯里化場景:

1.

add(3,4)(3)
add(3)(4,3)

2.

add(3)(4)(3)

您可以使用的第一個地址:

function add() {
    const args1 = Array.prototype.slice.call(arguments);
    return function() {
        const args2 = Array.prototype.slice.call(arguments);
        return args1.concat(args2).reduce(function(a, i) { return a + i });
    }
}

第二個:

function add() {
    const args1 = Array.prototype.slice.call(arguments);
    return function() {
        const args2 = Array.prototype.slice.call(arguments);
        return function() {
            const args3 = Array.prototype.slice.call(arguments);
            return args1.concat(args2).concat(args3).reduce(function(a, i) { return a + i });
        }
    }
}

我沒有找到具有同時處理兩者的功能的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM