首页 > 其他分享 >柯里化的存在意义是什么

柯里化的存在意义是什么

时间:2023-05-23 18:35:27浏览次数:41  
标签:function 存在 return 意义 args 参数 arguments 柯里化 fn

柯里化的存在意义是什么?

在函数式编程中,我们其实往往希望一个函数处理的问题尽可能的单一,而不是将一大堆的处理过程交给一个函数来处理

我们是否就可以将每次传入的参数在单一的函数中进行处理,处理完后在下一个函数中再处理后的结果

// 支持多参数传递
function progressCurrying(func) {
    var args = Array.prototype.slice.call(arguments, 1);
    var _this = this
    
    return function() {
        var curArgs = Array.from(arguments)
        var totalArgs = args.concat(curArgs)

        // 如果参数个数小于最初的fn.length,则递归调用,继续收集参数
        if (totalArgs.length >= func.length) {
            return func.apply(null, totalArgs);
        } else {
            //参数不够,则递归调用,继续收集参数
            totatlArgs.unshift(func);
            return _this.progressCurrying.apply(_this, totatlArgs)
        }
    }
}

function add (x,y,z) {
  //return [].reduce.call(arguments, (a, b) => a + b)
    return x+y+z
}

const g = progressCurrying(add,'我','今年')

g('12岁')  //'我今年12岁'

 延展运用

function curry(fn) {
    // 缓存除第一个参数的所有参数
    let args = [].slice.call(arguments, 1);
    let _fn = function () {
        if (arguments.length === 0) {
            return fn.apply(this, args)
        } else {
            args.push(...arguments);
            return _fn
        }
    }
    return _fn
}
function add() {
    return [].reduce.call(arguments, (a, b) => a + b)
}
console.log(curry(add, 2)(1, 3, 4)(2, 3)(3)(4, 6)(7, 98)()) // 133

 

标签:function,存在,return,意义,args,参数,arguments,柯里化,fn
From: https://www.cnblogs.com/xuhuang/p/17426061.html

相关文章

  • 浅析EasyCVR视频能力在自然灾害风险预警场景中的应用意义
    一、方案背景我国是自然灾害多发的国家,夏季也是灾害多发季节,山洪、泥石流、洪涝、冰雹、飓风、地震等自然灾害每年都给国家经济带来巨大的损失。建设自然灾害风险预警视频监控系统,实现对自然灾害的可视化预警监测和监管,并提供数据分析、设备管理、智能分析、实时告警等功能,辅助和提......
  • map判断是否存在某个key,以及遍历jsonobject
    if(filter.containsKey("nodeData")){JSONObjectjsonObject=(JSONObject)filter.get("nodeData");Iteratoriterator=jsonObject.keySet().iterator();while(iterator.hasNext()){Stri......
  • this.$refs.ref 不存在 undefined v-if和v-show 的区别
    <divv-if='true'>  <div>....<el-inputref='ref'/></div></div> 上面的代码,引用this.$refs.ref=undefined; 改为v-show解决。 网上有好多说法是:this.$nextTick(()=>{放这里});在这里不能解决的。原因:v-if条件不满足,document中是不存在的,v......
  • 为什么不能向下兼容呢?这是因为不同版本的 Refs 文件系统之间可能存在较大的差异,如接口
    Refs文件系统是在WindowsServer2012R2引入的,目前主要用于Windows服务器操作系统中。截至目前为止,Windows服务器操作系统中已经支持了三个版本的Refs文件系统:RefsV1:WindowsServer2012R2中引入的第一代Refs版本,该版本引入了Refs文件系统,并支持自动修复、数据......
  • 正则表达式的意义
    https://www.bilibili.com/video/BV1CS4y1C7ZY?p=60&spm_id_from=pageDriver&vd_source=29cb78abf51970a872824d0975a7bff5处理大量的字符串处理文字通过特殊符号的辅助,可以让linux管理员快速过滤、替换、处理所需要的字符串、文本,让工作高效。通常Linux运维工作,都是面临大......
  • 登陆google账号存在异常,但是无法使用自己的手机号码验证怎么办?
    谷歌账号登陆提示尝试次数过多,暂时无法登陆,这种情况下说明是谷歌在拦截你登陆。一般是因为ip环境异常或谷歌不信任此设备造成的,常见在苹果iPhone设备上。许多登陆DNF韩服谷歌的朋友在iPhone上登陆都容易出现这种情况。如图所示,你尝试次数越频繁,谷歌反而对此登陆活动更加敏感,所以出......
  • Q&A:IDEA环境下pom文件依赖引入成功,但提示版本号不存在
    Question: IDEA环境下pom文件依赖引入成功,但提示版本号不存在。Answer: 网络资料显示问题原因:可能是项目依赖中有些jar没有下载完整IDEA2020版本在maven构建时存在的BUG方案一: 在当前项目命令行mvnidea:idea,检查未下载完的jar并下载; 菜单选择【file】->【inva......
  • 某电商网站的优惠券系统存在可遍历领取漏洞
    介绍逻辑漏洞是指应用程序、系统或者服务中存在的错误逻辑,它可以被用过全控制、获取未授权的访问权限、窃取敏感信息等行为。在优惠券可遍历领取的情况下,攻击者可以通过枚举优惠券编号或者使用一些自动化工具,实现大量、快速地领取优惠而造成商家巨大的经济损失测试步骤打开该小......
  • OneFastClient客户端用SuperAdmin登录提示用户不存在?
    原因:服务器端没设超管密码解决办法:......
  • 课题的目的与意义
    课题的目的与意义:本研究的目的是通过对吉林省农科院不同地点种植的B73和Mo17玉米材料进行宏基因组分析,以探究它们在不同时间点和地点的土壤微生物群落组成和功能潜力差异。具体而言,我们将通过以下方式实现目标:探索土壤微生物与玉米材料互作关系:通过对不同地点和材料的宏基因组......