javascript - 当父函数接收不同参数时如何实现管道

标签 javascript functional-programming

我是函数式编程新手,有一个关于管道的问题。

假设我有以下功能:

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/

相关文章:

types - 我如何说服 Agda 的宇宙检查器我所做的事情是有根据的?

.net - F#中的Seq.map和Seq.collect之间的区别

clojure - clojure 代码示例中的这个函数定义有什么作用?

javascript - 查找倒数范围的函数式方法

javascript - 将位置绝对元素隐藏在位置相对父元素之外

javascript - 根据对象属性创建数组

javascript - 什么是 char 的最佳替代品?

javascript - 在 Javascript 中加载多个 CSV 文件

functional-programming - Malli 中的人性化是什么?

javascript - 如何获取动态加载的文本框的id -jquery