组合式函数编程
所谓组合式函数编程,是为了解决多层函数嵌套求值的问题,这种类似于“包菜式”的函数调用可以看如下示例:
var val = fn4(fn3(fn2(fn1(value))));
为了获得一个值,需要多层函数处理,这种实现方式看起来很不直观,而且也不利于维护,为此,可以使用函数组合的方式来实现同样的功能。
const compose = (...fns) =>
fns.reverse().reduce((prevFn, nextFn) =>
value => nextFn(prevFn(value)),
value => value
);
或者这样写更加好理解一些
const compose = (...fns) => (value => (fns.reverse().reduce((prevFn, fn) => fn(prevFn(value)))));
上述的函数就可该写为:
var val = compose(fn4, fn3, fn2, fn1)(value);
这样给阅读与维护都带来了巨大的便利性。
例如,需要将一个字符串所有字符转为大写,然后再根据空格拆分为一个数组,可以使用这种方式来实现效果。
const toUpperCase = word => word.toUpperCase();
const split = x => (str => str.split(x));
console.log(compose(split(' '), toUpperCase)('asdad adzxc 1s')); //[ 'ASDAD', 'ADZXC', '1S' ]
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=1074