当前位置:网站首页>函数柯里化
函数柯里化
2022-07-29 13:55:00 【Ocean!!】
什么是函数柯里化
**函数柯里化(**curry)是 函数式编程 中的概念。
函数柯里化是指: 每次调用函数时,先接收部分参数,并返回一个函数,然后传递剩下的一部分参数,再返回一个函数,直到传递完所有参数为止,
通俗的讲,函数柯里化就是:
固定部分参数,返回一个接受剩余参数的函数,也称为部分计算函数,目的是为了缩小适用范围,创建一个针对性更强的函数。
函数柯里化的作用(意义)
::: tip 意义
- 参数复用
- 提前返回
- 延迟执行
:::
解释:
比如,有一个柯里化函数add(最多传入3个参数),add(1,2)(m)的结果就是 1 + 2 + m,
那么只需要 令
fn_1_2 = add(1,2),之后只用fn_1_2(m),不需要传入1,2进而实现了参数复用
而 提前返回 和 延迟执行 也很好理解,因为每次调用函数时,它只接受一部分参数,并返回一个函数(提前返回),直到(延迟执行)传递所有参数为止。
例子:
add(1)(2)
const add = x => y => x + y;
add(1)(2) // 1 + 2
add(1)(2)(3)
const add = x => y => z => x + y + z;
add(1)(2)(3) // 1 + 2 + 3
::: warning
上面的例子比较简单,都是一个一个参数传入,那么一次传入两个、三个甚至n个参数呢?
:::
实现一个简单的柯里化函数
::: tip 思路
- curry是用来生成柯里化函数的 工具函数
- 根据传入的参数个数
(args.length)是否大于原函数所需参数个数(fn.length):- 如果大于,就执行当前函数
- 否则,就返回一个curry函数
:::
// 生成柯里化函数的 工具函数
function curry(fn,...args) {
if(args.length >= fn.length){
return fn(...args)
}
return function (..._args) {
return curry(fn,..._args,...args)
}
}
function test1(x,y,z) {
return x + y + z
}
let test = curry(test1)
console.log(test(1, 2, 3));
console.log(test(1, 2)(3));
console.log(test(1)(2, 3));
边栏推荐
猜你喜欢
随机推荐
【LeetCode】Day106-单词规律
十种实现延迟任务的方案
程序员是职业病高发群体,别天真的以为只有秃头那么简单,才不是呢。
题目 1125: C语言训练-委派任务*
PAT 甲级 A1021 Deepest Root
MLX90640 红外热成像仪测温传感器模块开发笔记(九)
PAT serie a A1021 Deepest Root
2022开放原子全球开源峰会数据库分论坛圆满召开
线程池工作流程-图示
解决:Parameter 0 of method ribbonServerList in com.alibaba.cloud.nacos.ribbon.NacosRibbonClientConfigu
torchvison里面的数据增强
【JS高级】js之闭包对象_04
Gee engine modification UI interface graphic tutorial
480-82(59、151)
尚硅谷大叔培训:揭秘Flink四种执行图——ExecutionGraph和物理执行图
3555. 二叉树
Alibaba CTO Cheng Li: open source is the source of basic software!
trivy如何从非关系型数据库查询数据
iMedicalLIS监听程序(1)
何为擦除机制,泛型的上界?








