Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值列表与Clojure中的映射值相关联?_Clojure - Fatal编程技术网

将值列表与Clojure中的映射值相关联?

将值列表与Clojure中的映射值相关联?,clojure,Clojure,将值列表与映射值关联的惯用方法是什么 这是我想要的结果,但匿名函数在我看来有点难看。有更好的方法吗 > (update-in {:x #{}} [:x] #(apply conj % '(1 2))) {:x #{1 2}} 匿名函数是不必要的 (update-in {:x #{}} [:x] conj 1 2) ;=> {:x #{1 2}} (update-in {:x #{}} [:x] into [1 2]) ;=> {:x #{1 2}} 您不必知道映射是否包含

将值列表与映射值关联的惯用方法是什么

这是我想要的结果,但匿名函数在我看来有点难看。有更好的方法吗

> (update-in {:x #{}} [:x] #(apply conj % '(1 2)))
{:x #{1 2}}

匿名函数是不必要的

(update-in {:x #{}} [:x] conj 1 2)
;=> {:x #{1 2}}

(update-in {:x #{}} [:x] into [1 2])
;=> {:x #{1 2}}

您不必知道映射
是否包含要将值连接到的键。调整你的例子

(update-in {} [:x] #(apply conj % '(1 2)))
;{:x (2 1)}
。。。不是你想要的

以下

(defn assocs [m k coll]
  (assoc m k (into (get m k #{}) coll)))
。。。如果不存在密钥项,则提供空的集合值

(assocs {} :x [1 2])
;{:x #{1 2}}

(assocs {:x #{2}} :x [1 2])
;{:x #{1 2}}

例如,您可以在中找到类似的代码。(警告:
graph
type只在其中一个算法中起作用,否则就会妨碍它。)

另一个选项是
(在{:x{}[:x]clojure.set/union{1 2}中更新)
。我更喜欢这个问题,因为它的意图更明确(向集合中添加元素)。我认为这个问题是泛型的,集合只是一个示例集合,但这是肯定的。顺便说一句,对于文本序列,使用向量(
[12]
)通常比引用列表(
”(12)
)更惯用,因为它的内容得到了计算。