我是函数式编程新手,有一个关于管道的问题。
假设我有以下功能:
const modifyArr = R.curry((i, newValue, arr) =>
Object.assign([], arr, {[i]: newValue}))
此函数更改特定索引上的数组值。
现在,我想使用此函数两次(使用管道)以实现数组中两个元素之间的交换。
我不知道怎么写。这就是我得到的:
const swap = (arr, a, b) =>
R.pipe(modifyArr(b, arr[a], modifyArr(a, arr[b])))
请注意,modifyArr 的柯里化(Currying)版本(在接收两个参数后)需要一个数组,但我将 3 个参数传递给交换函数。
当我的父函数接收与管道中第一个函数不同的参数时,如何使用管道?
谢谢。
最佳答案
鉴于您的函数是柯里化(Currying)的,您可以在进行管道传输之前部分应用以前的参数:
const swap = (arr, a, b) => R.pipe(modifyArr(a, arr[b]), modifyArr(b, arr[a]))(arr);
关于javascript - 当父函数接收不同参数时如何实现管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260408/