我可以想到几个解决方案:
将管道包装在另一个函数内,以便组合中的函数仍然可以引用原始参数。
Here func2
接受的输出func1
但也可以访问初始b
范围。明显地func2
必须进行柯里化并设计为接受其“数据”作为最后一个参数(我想说这是 Ramda 和函数式编程的原则)。
const func3 = (a, b, c) =>
pipe(func1, func2(b))
(a, b, c);
func3(10, 20, 30);
其他选择,func1
返回一个可以在其中解构的数组func2
.
我认为这不是特别好,但它是一个选择:
const func1 = (a, b, c) => [a + c, b];
const func2 = ([sum, b]) => sum * b;
const func3 = pipe(func1, func2);
func3(10, 20, 30);