Skip to content

柯里化

柯力化(currying)是一种函数转换技术,它将接受多个参数的函数转换成一系列接受单个参数的函数

柯里化的特点是,每个接受单个参数的函数都返回一个新的函数,直到所有参数都被收集完毕

js
function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args)
    }
    else {
      return function (...moreArgs) {
        return curried(...args, ...moreArgs)
      }
    }
  }
}

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

const curry_sum = curry(sum)
console.log(curry_sum(1, 2)(3))
function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args)
    }
    else {
      return function (...moreArgs) {
        return curried(...args, ...moreArgs)
      }
    }
  }
}

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

const curry_sum = curry(sum)
console.log(curry_sum(1, 2)(3))