功能组合

将多个函数合二为一,是函数式编程的通用实践;

组合构成了一个管道,我们的数据将通过这个管道传输并简单地修改功能组合(就像跟踪一起的轨道一样)……

你从一些单一责任职能开始:

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 实用程序库( lodashrambda 等)中,但你也可以从简单的实现开始,例如:

Version >= 6

 const compose = (...funs) =>
   x =>
   funs.reduce((ac, f) => f(ac), x);