gpt4 book ai didi

functional-programming - Elixir 如何在不经过两次 map 的情况下同时映射和减少

转载 作者:行者123 更新时间:2023-12-05 08:41:43 24 4
gpt4 key购买 nike

我有包含

的订单 map 列表
%{price, order_details}

我想获得该订单中的总价格,我还想返回使用该 map 中每个元素的 order_details 构建的变更集数组。如果不使用一个 reduce 和一个 map,我找不到一种方法来做到这一点,但这是两次进入列表。这是函数式编程中的一个好习惯吗?

最佳答案

我假设数据如下所示:

list = [
%{price: 1, order_details: "foo"},
%{price: 2, order_details: "bar"},
%{price: 3, order_details: "baz"},
]

您仍然可以将 reduce 与 sum 和 list 的元组一起用作累加器。

list
|> Enum.reduce({0, []}, fn x, {sum, list} ->
{sum + x.price, [x.order_details | list]}
end)
|> IO.inspect

输出:

{6, ["baz", "bar", "foo"]}

关于functional-programming - Elixir 如何在不经过两次 map 的情况下同时映射和减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48130195/

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