gpt4 book ai didi

javascript - lambda : Confused about pipe

转载 作者:行者123 更新时间:2023-11-28 12:57:19 26 4
gpt4 key购买 nike

我正在学习 JS 函数式编程,并使用 Ramda 进行。

我正在尝试创建一个接受参数并返回列表的函数。这是代码:

const list = R.unapply(R.identity);

list(1, 2, 3); // => [1, 2, 3]

现在我尝试使用pipe执行此操作:

const otherList = R.pipe(R.identity, R.unapply);

otherList(1,2,3);
// => function(){return t(Array.prototype.slice.call(arguments,0))}

这会返回一个奇怪的函数。

这个:

const otherList = R.pipe(R.identity, R.unapply);

otherList(R.identity)(1,2,3); // => [1, 2, 3]

由于某种原因起作用。

我知道这可能是一个新手问题,但是如果 f 是 unapply 并且 g 是 ,那么如何使用 pipe 构造 f(g(x)) >身份

最佳答案

阅读R.unapply docs 。它是一个获取函数并返回函数的函数,该函数可以接受多个参数,将其收集到单个数组中,并将其作为包装函数的参数传递。

因此,在第一种情况下,它将 R.identity 转换为可以接收多个参数并返回数组的函数。

在第二种情况下,R.unapply 获取 R.identity 的结果 - 单个值,而不是函数。如果将 R.identity 作为参数传递给管道,R.unapply 会获取一个函数并返回一个函数,这与第一种情况类似。

要使 R.unapplyR.pipe 一起使用,您需要将 R.pipe 传递给 R.unapply:

const fn = R.unapply(R.pipe(
R.identity
))

const result = fn(1, 2, 3)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>

关于javascript - lambda : Confused about pipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54135393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com