功能組合
將多個函式合二為一,是函數語言程式設計的通用實踐;
組合構成了一個管道,我們的資料將通過這個管道傳輸並簡單地修改功能組合(就像跟蹤一起的軌道一樣)……
你從一些單一責任職能開始:
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);