在函数式编程中,经常会出现多个函数组合,像这样:
const add1 = (x
) => x
+ 1
const mul3 = (x
) => x
* 3
const div2 = (x
) => x
/ 2
add1(mul3(div2(add1(6))))
这样虽然能够完成计算,但是可读性很差,所以我们需要构造一个函数完成上面的功能:
function compose(...funcs
) {
if (funcs
.length
=== 0) {
return arg
=> arg
}
if (funcs
.length
=== 1) {
return funcs
[0]
}
return funcs
.reduce((a
, b
) => (...args
) => a(b(...args
)))
}
compose(add1
, mul3
, div2
, add1
)(6);
转载请注明原文地址:https://ipadbbs.8miu.com/read-63715.html