实现一个函数柯里化
柯里化(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
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?