函数组合

纯函数和柯里化很容易写出洋葱代码,即一层套一层的方法h(g(f(x)))。

例如前面实现的一个功能:将一个数组的最后一个元素转换成大写字母:_.toUpper(_.first(_.reverse(array))),这种多次嵌套就是洋葱代码,为了解决这种状况,需要使用函数组合。

函数组合可以让我们把细粒度的函数重新组合生成一个新的函数

函数组合

如果一个函数要经过多个函数处理才能得到最终值,这个时候可以把中间过程的函数合并成一个函数

 函数就像是数据的管道,函数组合就是把这些管道连接起来,让数据穿过多个管道形成最终结果,函数组合默认是从右到左执行

 lodash中的组合函数

lodash中组合函数flow()和flowRight(),它们都可以组合多个函数,flow()是从左到右运行,flowRight()是从右到左运行。

 模拟实现flowRight()

 函数组合条件

函数的组合要满足结合律:我们可以把g和h组合,也可以把f和g组合,并且结果都是一样的:

let f = compose(f,g,h);
compose(compose(f,g),h) == compose(f,compose(g,h))
原文地址:https://www.cnblogs.com/yuyujuan/p/14544146.html