gpt4 book ai didi

javascript - 如何使用 Ramda compose 编写组合函数?

转载 作者:行者123 更新时间:2023-12-03 01:39:59 25 4
gpt4 key购买 nike

如何修改zCompositedFn函数以使z和zComlatedOutput的输出相同?

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)

关于javascript - 如何使用 Ramda compose 编写组合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50894253/

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