首页 > 解决方案 > 在 Ramda 中获取管道的先前值

问题描述

我在 Javascript 中有这段代码:

const R = require('ramda')

const f1 = () => 4
const f2 = () => 5
const f3 = value => value + 1

R.pipe(
    f1,
    f2,
    f3,
    console.log    
)()   // output = 6

出于某种原因,我需要 f1() 在 f3() 上产生的值。

我怎样才能做到这一点?

谢谢。

标签: javascriptfunctional-programmingramda.js

解决方案


我已经改变了我对这个问题的看法。

我想:如果 f3() 需要 f1() 和 f2() 的一些值,为什么不在 f3 上明确说明呢?

我注意到只使用管道不是正确的选择。

我在 Ramda 文档上搜索并找到了收敛函数。

这解决了我的问题(从原始问题编辑):

const R = require('ramda')

const f1 = () => 4
const f2 = () => 5
const f3 = (v1, v2) => v1 + v2

R.pipe(
    R.converge(f3, [f1, f2]),
    console.log
)() // output 9

推荐阅读