Introduction
柯里化(Currying)是一种函数式编程的技术,它是将一个接受多个参数的函数转换为一系列只接受一个参数的函数的过程。这些只接受一个参数的函数被称为柯里化函数。
下面是一个Currying实现的例子,需要好生领悟。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| function curry(func) { return function curried(...args) { if (args.length >= func.length) { return func.apply(this, args); } return function (...args2) { return curried.apply(this, [...args, ...args2]); }; }; }
function curry1(func) { return function curried() { if (arguments.length >= func.length) { return func.apply(this, arguments); } const oldArguments = arguments; return function () { return curried.apply(this, [...oldArguments, ...arguments]); }; }; }
function sum(a, b, c) { return a + b + c; }
const currySum = curry(sum); console.log(currySum(1)(2)(3)); console.log(currySum(1, 2)(3)); console.log(currySum(1)(2, 3)); console.log(currySum(1, 2, 3));
|