繁体   English   中英

如何使用Ramda compose编写复合函数?

[英]How to write a composed function using Ramda compose?

如何修改zComposedFn函数,以使z和zComposedOutput的输出相同?

 const R = require('ramda'); let f1 = R.curry((p1, p2, p3) => { let result = { n1: p1, n2: p2, n3: p3 }; return result; } ); let x = f1(1, 2, 3); let y = f1(1, 2, x); let z = f1(1, x , y); console.log(z); let zComposedFn = R.compose(f1); let input = [1,2,3]; let zComposedOutput = zComposedFn(...input); console.log(zComposedOutput); 

目标是创建一些具有相同签名和输出类型但实现方式不同的度量计算功能。

const MetricFn = (m,f,a) => {<to be implemented using switch case on m> return b}

m : name of metric as string
f : Array of functions utilizing  input data objects
a : input data object

例:

有一个财务仪表板,它接收输入数据为(1,2,3)。 仪表板显示按以下方式计算的metric1,metric2和metric3:

metric1 = MetricFn('metric1',[f1])(1,2,3);
metric2 = MetricFn('metric2',[f1, f2])(1,2,3);
metric3 = MetricFn('metric3',[f1, f2, f3])(1,2,3);

我想知道如何创建MetricFn的结构。

我对您的工作毫无意义。 而且我没有看到Ramda提供的任何帮助。 当我是Ramda的作者时,我并不总是想起每个函数,但似乎不太可能。

您的需求看起来像是模糊的使用chain与函数,其中chain(f, g) ~~> x => f(g(x))(x) 但这只是模糊的联系,我看不到如何使用链来完成您想做的事情。

您是否正在尝试解决一个潜在的问题,我们也许可以为您解决?

这是一个简单的实现,但主要是在不使用中间变量的情况下重新编写代码:

const foo = curry((f, a, b, c) => f(a, f(a, b, c), f(a, b, f(a, b, c))))
foo(f1)(1, 2, 3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM