Elixir实现求和公式时Enum.each返回:ok无法传入Enum.sum问题求助
Elixir 遍历求和问题解决方案
- 核心原因:
Enum.each/2仅用于执行遍历副作用,固定返回:ok,不会留存每轮迭代的计算结果,因此无法直接传入Enum.sum/1做后续计算。 - 最简单的修改方案是改用
Enum.map/2收集所有计算结果,再求和:
result = 1..2 |> Enum.map(fn x -> :math.pow(1 + 1/1, -x) end) |> Enum.sum()
- 如果不需要留存中间计算结果,也可以直接用
Enum.reduce/3单次遍历完成求和,性能更优:
result = Enum.reduce(1..2, 0, fn x, acc -> acc + :math.pow(1 + 1/1, -x) end)
内容的提问来源于stack exchange,提问作者Borybar
相关产品推荐
相关产品推荐

