最近看阮大神的es6入门中提到了一个部署管道机制(pipeline)的例子,它的作用就是:前一个函数的输出是后一个函数的输入。
const pipeline = (...funcs) =>
val => funcs.reduce((a, b) => b(a), val);
const plus1 = a => a + 1;
const mult2 = a => a * 2;
const addThenMult = pipeline(plus1, mult2);
console.log(addThenMult(5))
// 12
上面这种写法,理解有点困难,然后根据自己的大致理解,翻译了一下这个函数:
const pipeline = function(...funcs){
return function(val){
return funcs.reduce(function(a,b){
return b(a);
},val);
}
}
const plus1 = function(a){
return a+1;
}
const mult2 = function(a){
return a*2;
}
const addThenMult = function(num){
return pipeline(plus1(num),mult2);
}
console.log(addThenMult(5));
//12
上面的写法等同于下面的写法:
const plus1 = a => a + 1;
const mult2 = a => a * 2;
mult2(plus1(5))
// 12