当前位置:网站首页>浅聊组合函数
浅聊组合函数
2022-08-02 15:01:00 【InfoQ】
经历过一些列的函数式编程思想的学习总结,一些重要的高阶函数的学习,以及前一段时间关于 RxJS 的学习。
我们再回看一次 —— 组合函数 compose
本瓜越来越觉得,【易读】的代码应该是将声明和调用分开来的。根据不同的流程,用函数组合的方式、也可以说它是管道、或者说是链式调用,将声明的函数组合起来,再等待时机进行调用。
如果没有组合函数 compose,函数连续调用将会是嵌套的:
const multi10 = function(x) { return x * 10; }
const toStr = function(x) { return `${x}`; }
const compute = function(x){
return toStr(multi10(x))
}
compute(8)
fn3(fn2(fn1(fn0(x)))),层层嵌套是很容易看错的;
所以,必须尝试将调用层级扁平化!
compose 应运而生,它大概就会是这样:
const compose = function(f,g) {
return function(x) {
return f(g(x))
}
}
let compute = compose(toStr, multi10)
compute(8)
通过使用
compose函数我们可以把两个函数组合成一个函数,这让代码从右往左执行,而不是层层计算某个函数的结果作为另一个函数的参数,这样代码也更加直观。
当然,我们不能让 compose 限制于只能处理连续调用两个函数,于是支持任意参数版本的 compose 将是这样的:
function compose(...funs){
return (x) =>funs.reduce((acc, fun) => fun(acc), x)
}
通过函数组合,我们可以可以声明式地指定函数间的关系,代码的可读性也大大提高,也方便我们后续对代码进行扩展跟重构;
而且在
React里面,当我们的高阶组件变多的时候,一个套着一个就很难看,我们就可以通过类似的方式来让我们的高阶组件层级扁平化;
这就是最最原始的 compose,以及它被提出的原始动机~~
<hr>
OK,以上便是本篇分享。点赞关注评论,为好文助力
我是掘金安东尼 100 万阅读量人气前端技术博主 INFP 写作人格坚持 1000 日更文 陪你一起度过漫长岁月
边栏推荐
- 【 Leetcode string, the string transform/hexadecimal conversion 】 HJ1. The length of the string last word HJ2. Calculation of a certain number of characters appear HJ30. String merging processing
- 已经2022下半年了,居然还在说链动2+1!
- Linux系统中mysql数据库的基本管理
- 5000mAh大电池!华为全新鸿蒙手机今晚亮相:更流畅更安全
- PAT serie a 1137 final grades
- 遍历堆 PAT甲级 1155 堆路径
- HDU1561 树形背包dp+边界优化 0ms过题
- MySQL的简单运用-where、update、delete、like、union
- Qt | 关于对象树和元对象的相关问题
- 软件成分分析:华为云重磅发布开源软件治理服务
猜你喜欢
随机推荐
PAT甲级 1019 普通回文数
Qt | Qt 的项目文件.pro 文件详解
虚拟现实处理器(SXR2130P)ISO7640FMDW(数字隔离器)说明
Selenium元素定位方法总结
622. 设计循环队列 : 数组模拟循环队列
如何利用PHP实现词法分析器与自定义语言
PAT甲级 1130 中缀表达式
高并发 MySQL 性能优化指南,自取
统计二进制中1的个数,两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
CNN flower classification
【个人总结】2022.7月结
软件成分分析:华为云重磅发布开源软件治理服务
NXP i.MX 8M Mini工业核心板B2B版本,4核ARM [email protected]设计
5000mAh大电池!华为全新鸿蒙手机今晚亮相:更流畅更安全
MySQL 行级锁(行锁、临键锁、间隙锁)
兆骑科创创业赛事活动路演,高层次人才引进平台
MySQL 高级(进阶) SQL 语句 (一)
“绿色低碳+数字孪生“双轮驱动,解码油气管道站升级难点 | 图扑软件
A status code, and access baidu process
程序员开发效率神器汇总!








