admin 管理员组文章数量: 1087652
柯里化函数的理解
柯里化函数
1. 柯里化函数有多个形参的函数转换成多个只有一个形参的函数
f(a,b,c) -> fn(a)fn1(b)fn2(c)
f(a,b,c) -> fn(a)(b)(c)
function sum(a,b){return a + b}// let s = sum(10,20)// console.log(s)/*sum进行柯里化转换 -> f(10)(20) <=> sum(10,20)let f = curryingSum(sum)*/function curryingSum(sum){return function(a){ //接收第一个参数return function(b){ //接收第二个参数return sum(a,b) //两个参数融入sum中计算进行返回}}}let f = curryingSum(sum)let s = f(10)(20)console.log('s ',s)
2.可以实现参数的复用
function sum(a,b){return a + b}function curryingSum(sum){return function(a){ //接收第一个参数return function(b){ //接收第二个参数return sum(a,b) //两个参数融入sum中计算进行返回}}}let f = curryingSum(sum) //柯里化函数sumlet s = f(10) //复用第一个参数10let k = s(20)let g = s(50)console.log('k ',k,'g',g) //30 60
1.参数复用的好处:
1.我们在封装一个函数时,如果我们确定前几部的操作该到哪里,那我们可以进行柯里化确定的操作 避免一些重复的操作
3.通用的封装方法 我们可以一次传入多个值 还可以多次操作 提高了程序复用性
function currying(func) { return function curried(...args) { //展开参数 可以一次传多个参数 暂时第一次传的参数if (args.length >= func.length) { //判断传入参数是否 全部获取return func.apply(this,args) // return func(...args) //这两个写法是一样的效果 } else {return function (...arg2) { //展开参数 可以一次传多个参数 暂时第二次传的参数let arg = [...args, ...arg2] //合并参数return curried.apply(this, arg) 全部传入curried方法返回}}}}
本文标签: 柯里化函数的理解
版权声明:本文标题:柯里化函数的理解 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686651086a20469.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论