功能組合

將多個函式合二為一,是函數語言程式設計的通用實踐;

組合構成了一個管道,我們的資料將通過這個管道傳輸並簡單地修改功能組合(就像跟蹤一起的軌道一樣)……

你從一些單一責任職能開始:

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);