gpt4 book ai didi

clojure - 为什么clojure中有这么多 map 构建函数?

转载 作者:行者123 更新时间:2023-12-02 11:44:30 26 4
gpt4 key购买 nike

新手问题,但我不太明白为什么clojure中有这么多构造映射的操作。

您有 conjassocmerge,但它们似乎或多或少做了同样的事情?

(assoc {:a 1 :b 2} :c 3)
(conj {:a 1 :b 2} {:c 3})
(merge {:a 1 :b 2} {:c 3})

真正的区别是什么?为什么所有这些方法在做或多或少相同的事情时都需要?

最佳答案

assocconj 对于其他数据结构的行为非常不同:

user=> (assoc [1 2 3 4] 1 5)
[1 5 3 4]
user=> (conj [1 2 3 4] 1 5)
[1 2 3 4 1 5]

如果您正在编写一个可以处理多种集合的函数,那么您的选择将会产生很大的影响。

merge 视为仅限 map 的函数(与其他集合的 conj 类似)。

我的看法:

  • assoc - 在“更改”现有键/值对时使用
  • conj - 在“添加”新键/值对时使用
  • 合并 - 在组合两个或多个 map 时使用

关于clojure - 为什么clojure中有这么多 map 构建函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3203631/

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