We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
函数柯里化(curry)是函数式编程里面的概念。curry的概念很简单:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
主要有3个作用: 参数复用、提前返回和 延迟执行
我们来简单的解释一下: 参数复用:拿上面 f这个函数举例,只要传入一个参数 z,执行,计算结果就是 1 + 2 + z 的结果,1 和 2 这两个参数就直接可以复用了。
f
z
1 + 2 + z
提前返回 和 延迟执行 也很好理解,因为每次调用函数时,它只接受一部分参数,并返回一个函数(提前返回),直到(延迟执行)传递所有参数为止。
function curry(fn, ...args) { return args.length >= fn.length ? fn(...args) : (..._args) => curry(fn, ...args, ..._args) } function add(a, b, c) { return a+b+c } const addC = curry(add, 1)(2)(3) //6
原文链接:
The text was updated successfully, but these errors were encountered:
function dynamicAdd() { return [...arguments].reduce((prev, curr) => { return prev + curr }, 0) }
function curry(fn, ...args) { function curried(..._args) { return curry(fn, ...args, ..._args) } curried.toString = function() { return fn(...args) } return curried }
var add = curry(dynamicAdd); alert(add(1)(2)(3)(4)) // 10
Sorry, something went wrong.
No branches or pull requests
什么是函数柯里化
函数柯里化(curry)是函数式编程里面的概念。curry的概念很简单:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
柯里化有什么作用
主要有3个作用: 参数复用、提前返回和 延迟执行
我们来简单的解释一下: 参数复用:拿上面
f
这个函数举例,只要传入一个参数z
,执行,计算结果就是1 + 2 + z
的结果,1 和 2 这两个参数就直接可以复用了。提前返回 和 延迟执行 也很好理解,因为每次调用函数时,它只接受一部分参数,并返回一个函数(提前返回),直到(延迟执行)传递所有参数为止。
原文链接:
The text was updated successfully, but these errors were encountered: