gpt4 book ai didi

list - 在 Elm 中更新列表中元素的更有效方法?

转载 作者:行者123 更新时间:2023-12-04 18:59:40 25 4
gpt4 key购买 nike

是否有比 map 更有效的方法来更新 Elm 中列表中的元素?遍历每个元素?

{ model | items = List.indexedMap (\i x -> if i == 2 then "z" else x) model.items }

也许 Elm 的编译器足够复杂,可以优化它,以便 mapindexedMap不是不必要地复制除 1 之外的每个元素。嵌套列表呢?

Clojure has assoc-in 更新嵌套列表或记录中的元素(也可以组合)。榆树有等价物吗?

最佳答案

方面更高效代码量将是(这类似于@MichaelKohl 的回答):

List.take n list ++ newN :: List.drop (n+1) list

PS:如果 n 是 < 0 或 n >(列表长度 - 1),那么新项目将被添加到列表之前或末尾。

PPS:我好像记得 a :: alist性能略好于 [a] ++ alist .

如果您的意思是在 方面高效性能 /操作次数:

一旦你的列表变大,使用 Array 会更有效率。 (或 Dict )而不是 List 作为您的类型。

但有一个权衡:
  • ArrayDict当您经常检索/更新/添加项目时,它们非常高效/高性能。
  • List当您执行频繁的排序和过滤以及其他实际需要映射整个集合的操作时,它的性能非常好。

  • 这就是为什么在我的代码中, List是我在 view 中经常使用的代码。在数据方面(在我的 update 函数中)我使用 DictArray更多的。

    关于list - 在 Elm 中更新列表中元素的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732840/

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