函数柯里化是将多参数函数转换为一系列单参数函数,通过闭包保存预设参数实现复用,参数齐全时执行原函数,支持多次复用和灵活求值。

函数柯里化通过将多参数函数转换为一系列单参数函数,实现参数的逐步传入和复用。核心在于“固定部分参数,返回可继续接收剩余参数的新函数”,从而让同一组预设参数能被多次复用。
用闭包保存预设参数
每次调用柯里化函数时,把已传入的参数存进闭包,返回的新函数能访问这些“已固定”的参数,后续调用只需补全剩下的。
- 例如
add(1)(2)(3)中,1和2会被暂存,直到累积够全部参数才真正计算 - 闭包是参数复用的技术基础——它让预设值在多次调用间保持有效
判断参数是否齐全再执行
不能一上来就运行原函数,得靠参数数量或特殊标记(如不传参、传 null/undefined)来触发最终计算。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 常见做法:收集参数直到个数达标,比如原函数需 3 个参数,就等三次调用
- 更灵活的方式:允许中途不传参(
fn(1)(2)()),空调用作为“求值信号”
支持多次复用同一柯里化函数
柯里化后得到的是一个“模板函数”,预设不同初始参数,就能生成多个行为不同的新函数。
const add5 = curry(add)(5); add5(3); // 8const multiply2 = curry(multiply)(2); multiply2(7); // 14- 每个结果函数都封装了各自的固定参数,互不影响
简易通用实现示例
以下是一个兼顾可读性与实用性的 currying 实现:
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn(...args);
}
return (...moreArgs) => curried(...args, ...moreArgs);
};
}
它利用 fn.length 获取期望参数个数,自动判断何时该执行;返回的函数始终能接收新参数并累积,天然支持复用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










