功能组合
将多个函数合二为一,是函数式编程的通用实践;
组合构成了一个管道,我们的数据将通过这个管道传输并简单地修改功能组合(就像跟踪一起的轨道一样)……
你从一些单一责任职能开始:
Version >= 6
const capitalize = x => x.replace(/^\w/, m => m.toUpperCase());
const sign = x => x + ',\nmade with love';
并轻松创建转换轨道:
Version >= 6
const formatText = compose(capitalize, sign);
formatText('this is an example')
//This is an example,
//made with love
NB 组合是通过一个通常称为 compose
的效用函数实现的,如我们的例子所示。
compose
的实现存在于许多 JavaScript 实用程序库( lodash , rambda 等)中,但你也可以从简单的实现开始,例如:
Version >= 6
const compose = (...funs) =>
x =>
funs.reduce((ac, f) => f(ac), x);