ChuChencheng / note

菜鸡零碎知识笔记
Creative Commons Zero v1.0 Universal
3 stars 0 forks source link

函数柯里化 #34

Open ChuChencheng opened 4 years ago

ChuChencheng commented 4 years ago

概念

函数式编程中的概念,一个函数经过柯里化处理后,可以接受任意数量的参数,如果参数数量不足,则会返回一个新的函数,这个新的函数也是一个柯里化的函数,可以接收剩余的参数;如果参数数量足够,则执行原来的函数。

例子

const add = curry((a, b) => a + b)
add(1)(2) // 3
add(1) // function

实现

const curry = (fn, array = []) => {
  const len = fn.length - array.length
  return (...args) => {
    if (args.length < len) {
      return curry(fn, array.concat(args))
    } else {
      return fn.apply(this, array.concat(args))
    }
  }
}
ChuChencheng commented 4 years ago

scriptoj 题目: #30 curry 函数