实现一个函数柯里化

柯里化(Currying)是一种在计算机科学和函数式编程中常见的技术,它指的是将一个使用多个参数的函数转换成一系列使用一个参数的函数。

以下是一个简单的柯里化函数的实现,它接受一个函数和该函数的参数长度,然后返回一个新的函数,这个新函数会依次接受参数,并在所有参数都提供后执行原函数:

function curry(fn, length) {
    length = length || fn.length;  // 需要柯里化的函数参数的数量

    return function () {
        if (arguments.length < length) {  
            var combined = [fn].concat(Array.prototype.slice.call(arguments));
            return curry(curry.apply(this, combined), length - arguments.length);
        } else {
            return fn.apply(this, arguments);
        }
    };
}

你可以这样使用它:

function sum(a, b, c) {
    return a + b + c;
}

var curriedSum = curry(sum);

console.log(curriedSum(1)(2)(3)); // 输出 6

在这个例子中,curry函数接受sum函数作为参数,并返回一个新的函数curriedSum。这个新函数可以分步骤地接受参数,并在所有参数都被提供后执行原函数。所以curriedSum(1)(2)(3)相当于sum(1, 2, 3),都输出6

posted @   王铁柱6  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示