gpt4 book ai didi

javascript - 你能给我一个如何使用 Ramda lift 的例子吗?

转载 作者:数据小太阳 更新时间:2023-10-29 05:17:17 26 4
gpt4 key购买 nike

我正在阅读 ramda 文档

const madd3 = R.lift((a, b, c) => a + b + c);

madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]

这看起来是一个非常有用的功能。我看不出它有什么用例。

谢谢

最佳答案

这个函数只能接受数字:

const add3 = (a, b, c) => a + b + c;
add3(1, 2, 3); //=> 6

但是,如果这些数字分别包含在一个仿函数中呢? (即包含值的事物;下例中的数组)

add3([1], [2], [3]); //=> "123"

这显然不是我们想要的。您可以“提升”函数,以便它可以“提取”每个参数/仿函数的值:

const add3Lifted = lift(add3);
add3Lifted([1], [2], [3]); //=> [6]

数组显然可以保存多个值,并结合知道如何提取每个仿函数值的提升函数,您现在可以这样做:

add3Lifted([1, 10], [2, 20], [3, 30]);
//=> [6, 33, 24, 51, 15, 42, 33, 60]

这基本上就是如果你这样做的话你会得到的:

[
add3(1, 2, 3), // 6
add3(1, 2, 30), // 33
add3(1, 20, 3), // 24
add3(1, 20, 30), // 51
add3(10, 2, 3), // 15
add3(10, 2, 30), // 42
add3(10, 20, 3), // 33
add3(10, 20, 30) // 60
]

请注意,每个数组的长度不必相同:

add3Lifted([1, 10], [2], [3]);
//=> [6, 15]

所以回答你的问题:如果你打算运行一个具有不同值集的函数,提升该函数可能是一个有用的考虑因素:

const results = [add3(1, 2, 3), add3(10, 2, 3)];

等同于:

const results = add3Lifted([1, 10], [2], [3]);

关于javascript - 你能给我一个如何使用 Ramda lift 的例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54178228/

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