gpt4 book ai didi

clojure - 一旦达到所需的累积量,如何停止reduce函数处理列表?

转载 作者:行者123 更新时间:2023-12-03 00:27:34 24 4
gpt4 key购买 nike

在程序世界中,如果我必须找到满足测试的列表中的第一项,我只需使用 breakreturn

在 Clojure 中,当我使用 reduce 处理列表以查找第一个值时,如果继续处理整个列表,会不会效率低下?

例如:验证字典列表是否有错误;每个字典都有一个名为 count 的键。现在列表中这些计数字段的总和不应超过某个值。如何找到列表中总和超过限制的第一项?

理想情况下,我会使用reduce并维护运行总计;一旦总数超过限制,我想停在那里(我不知道该怎么做)。

此外,reduce 的返回值每次都是到目前为止的总和,但我需要在最后返回索引。

最佳答案

您可以使用reduced终止缩减的函数:

(reduce (fn [sum x] 
(if (> sum 10)
(reduced 10)
(+ sum x)))
0
[1 2 3 4 5 6 7 8 9 10])

关于clojure - 一旦达到所需的累积量,如何停止reduce函数处理列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23822260/

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