短视频开源源码,js函数柯里化 - 云豹科技

短视频开源源码,js函数柯里化

函数柯里化

维基百科: 柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。(这里说的是 返回一个接受单一参数的函数,我觉得我们实现的时候,可以更灵活,返回一个可以接受任意多参数的函数)

柯里化有什么用途

curry 的概念很简单:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。

// 原函数 
var add = function(x,y) {return x + y;
};
// 简单curry化后 应该是:
var add = function(x) {return function(y) {return x + y;};
};
// 实现分开传参的目的
// 先加10
var addTen = add(10);
// 再加5
addTen(5);   // 15
addTen(10);  // 20

好处: 可以固定相同参数,实现函数调用传参的简单化。

举个例子,计算一个长方体的体积,如果长方体长和宽是不变,高度是发生变化的。
一般情况下我们会这么做:

function volumn(l,w,h) {return l*w*h
}
// 计算过程会变成这样
let V1 = volumn(10,20,30)
let V2 = volumn(10,20,20)
let V3 = volumn(10,20,15)如果我们把volumn函数柯里化,变成如下函数:
function curry_volumn(l,w) {return function(h) {return l*w*h}
}
// 计算过程可以优化如下
// 先传入长和宽,得到一个新函数
let square = curry_volumn(x,y)
// 再计算体积
let V1 = square(30)
let V2 = square(20)
let V3 = square(15)

例子简单,大家自己体会其中的好处。下面我们就是要实现一个curry工具。

curry工具函数的简单实现

​ 需要注意传入工具函数的函数参数是不一定的。

 // 思路:// 1. curry工具函数 接受一个函数返回一个函数,框架如下:// function curry(fn) {//     return function(...args) {}// }// 2. 返回的函数可以接受一个参数或者多个参数,//    a.如果args长度大于等于 fn.length(形参),直接返回fn函数的执行结果//    b.如果args长度小于 fn.length(形参),继续返回一个函数,返回的函数需要继续执行第二步的递归调用,别且记录前几次输入的参数,知道参数长度大于等于fn.length,返回fn执行结果// function curry(fn) {//     return function(...args) {//         if(args.length >= fn.length) {//             如果传入参数长度等于原函数形参长度,直接返回结果//         } else {//             返回一个函数,函数内部需要重新比较args.length >= fn.length,于是我封装了递归函数 rec//         }//     }// }// 柯里化工具函数function curry(fn) {// 获取形参的长度return function(...args) {if(args.length >= fn.length) {// 如果传入参数长度等于原函数形参长度,直接返回结果return fn.apply(this, args)} else {// 否则返回一个函数let length = args.length;return rec;function rec(...others) {if(others.length + length >= fn.length) {return fn.apply(this, args.concat(others))} else {args = args.concat(others)length = others.length + lengthreturn rec}}}}}// 用上面的例子做测试function volumn(l, w, h) {return l * w * h}let curry_volumn = curry(volumn)let square = curry_volumn(10, 20)console.log(square(10))   // 2000console.log(square(20))   // 4000console.log(square(30))   // 6000// 测试传入不同数量的参数console.log(curry_volumn(10)(20)(30))  //   6000console.log(curry_volumn(10)(20,30))       //  6000console.log(curry_volumn(10,20)(30))       //  6000console.log(curry_volumn(10)(20)(3

短视频开源源码,js函数柯里化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1172895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年评价高的武汉隐形车衣,武汉汽车车衣,武汉汽车防爆膜旗舰店采购选型榜单 - 品牌鉴赏师

引言在汽车美容与防护领域,隐形车衣和汽车防爆膜的选择对于车主来说至关重要。尤其是在武汉这样的汽车消费大市场,众多车主都在寻求高品质的汽车贴膜服务。为了给武汉的车主们提供一份客观、公正、实用的采购选型榜单…

聊聊2026年同步带轮厂家哪家好?盖奇同步带轮口碑出众值得选! - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家同步带轮领域标杆企业,为工业制造、纺织、机床等行业企业选型提供客观依据,助力精准匹配适配的传动产品伙伴。 TOP1 推荐:宁波鄞州盖奇同步带轮有限公司 推…

【2026年精选毕业设计:基于Spring Boot的校园失物招领系统的设计与实现(含论文+源码+PPT+开题报告+任务书+答辩讲解)】 - 指南

【2026年精选毕业设计:基于Spring Boot的校园失物招领系统的设计与实现(含论文+源码+PPT+开题报告+任务书+答辩讲解)】 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto…

清远市阳山连山壮族瑶族连南英德连州区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜推荐 - 老周说教育

经全国教育测评联盟认证、雅思备考数据研究院联合发起,基于清远市阳山县、连山壮族瑶族自治县、连南瑶族自治县、英德市、连州市18000+雅思考生专项调研、102家教育机构全方位实测及《2024-2025中国大陆雅思成绩大数据…

学习行为数据挖掘与资源推荐系统毕业设计源码(源码+lw+部署文档+讲解等)

博主介绍:✌ 专注于VUE,小程序,安卓,Java,python,物联网专业,有18年开发经验,长年从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。一、…

kubeadm 离线部署 Kubernetes 集群 + 完整测试【20260117】002

文章目录 Kubeadm 离线部署 Kubernetes 集群完整指南 一、环境准备 1.1 机器规划 1.2 系统配置(所有节点执行) 二、离线资源准备 2.1 在有网络的环境中准备离线包 2.2 传输离线包到离线环境 三、安装Docker(所有节点) 3.1 离线安装Docker 四、安装Kubernetes组件 4.1 部署K…

kubeadm 离线部署 Kubernetes 集群 + 完整测试【20260117】001

文章目录 kubeadm 离线部署 Kubernetes 集群 + 完整测试 一、前期准备 1. 环境规划(最小化集群) 2. 所有节点统一基础配置(必须执行) (1)关闭防火墙 (2)关闭 SELinux (3)关闭交换分区 (4)配置内核参数(开启IP转发、加载overlay模块) (5)配置主机名与hosts解析(…

2026年可靠的隧道钢波纹片,钢波纹管涵洞,整装波纹涵管厂家选型推荐手册 - 品牌鉴赏师

2026 年可靠的隧道钢波纹片,钢波纹管涵洞,整装波纹涵管厂家选型推荐手册 引言在交通基础设施建设领域,波纹涵管、钢波纹管涵洞、隧道钢波纹片、整装波纹涵管、拼装波纹涵管、金属波纹涵管及镀锌钢波纹管涵等产品的应…

2026年口碑好的附近心理咨询,南市区心理咨询,五华区心理咨询公司行业热门推荐 - 品牌鉴赏师

2026 年口碑好的附近心理咨询、南市区心理咨询、五华区心理咨询公司行业热门推荐在当今社会,心理健康问题日益受到关注,心理咨询行业也迎来了蓬勃发展。为了给消费者提供更专业、客观的心理咨询公司推荐,我们依据多…

2025年市面上有实力的尘埃在线监测系统厂家推荐榜,大流量尘埃粒子计数器/粒子计数器 /空气粒子计数器厂家排名 - 品牌推荐师

随着半导体、生物医药、精密制造等高端产业的快速发展,对生产环境的洁净度要求达到了前所未有的严苛标准。尘埃在线监测系统作为保障洁净室(区)空气粒子浓度持续达标的“电子哨兵”,其重要性日益凸显。市场需求的激…

福田奥铃CTS CTX EV M4 EV M卡 T3 TS TX 中卡 捷运 速运维修手册电路图资料拆装大修修理螺丝扭力扭力传感器安装位置拆装过程故障码诊断流程针脚定义保险盒图解继电器图解线束走向分布

资料来源:汽修帮手资料库汽修帮手资料库提供各大厂家车型维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等,并长期保持高频率资料更新覆盖车型&a…

丽江目的地婚礼推荐TOP3权威榜:真实口碑+服务实力双测评 - 提酒换清欢

2026丽江目的地婚礼TOP3权威榜:真实口碑+服务实力双测评丽江,以雪山的圣洁、古城的韵味、草甸的辽阔,成为无数新人心中的婚礼圣地。但市场机构良莠不齐,“隐形消费”“风格同质化”“服务不到位”等问题频发,选对…

福田时代EV M3 递哥 领航 领航M5 领航S1 驭菱 驭菱维修手册电路图资料拆装大修修理螺丝扭力扭力传感器安装位置拆装过程故障码诊断流程针脚定义保险盒图解继电器图解线束走向分布图正时校对点位钣金尺

资料来源:汽修帮手资料库汽修帮手资料库提供各大厂家车型维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等,并长期保持高频率资料更新覆盖车型&a…

基于springBoot的小区健身房管理系统设计与实现

背景分析随着城市化进程加速,居民健康意识提升,社区健身房成为基础配套设施需求。传统健身房管理依赖人工登记、纸质记录,存在效率低、数据易丢失、会员体验差等问题。SpringBoot框架因其快速开发、微服务支持等特性,为构建智能化…

day133—快慢指针—链表的中间结点(LeetCode-876)

题目描述给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:head [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个中间结点,值为 3…

ssm603人事档案管理系统带前端

目录系统概述技术架构核心功能创新与优势应用价值开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 SSM603人事档案管理系统是基于Spring、SpringMVC和MyBatis(SSM)框架开发的企业级应用&#xf…

深入解析 Flutter 跨端开发在扫描全能王移动端应用中的实践:从技术栈到面试准备

上海合合信息科技股份有限公司 Android开发工程师 职位信息 【工作内容】 - 负责扫描全能王移动端跨端的功能模块设计和业务开发 - 可以对其开发的模块进行测试,保证代码的质量 - 对于紧急问题,有责任心且意愿加班快速处理 - 积极主动和需求方沟通,对于需求变更,响应快速 -…

短视频平台源码,CSS实现聊天布局 - 云豹科技

短视频平台源码,CSS实现聊天布局<template> <!-- 外部容器 --><div class="chatContainer"><!-- 聊天窗口 --><div class="chat"><!-- 左侧导航 --><div…

基于SpringBoot的水产养殖管理系统的设计与实现

核心模块设计SpringBoot水产养殖管理系统通常包含养殖管理、水质监测、饲料投喂、数据分析等模块。以下是关键模块的核心代码示例&#xff1a;数据库实体类设计Entity Table(name "aquatic_farm") public class AquaticFarm {IdGeneratedValue(strategy Generation…