在这种情况下,该工作代码在数据方面意义不大。
conj 可以将两个元素的向量连接到一个映射中,具有精确的语义。将向量列表连接到中不应工作。
换句话说 (conj {} [[:a 1] [:b 2]]) 是可以的,因为我们正在连接两个向量的向量,结果是 {[:a 1] [:b 2]}。
然而,(conj {} '([:a 1] [:b 2])) 并不应该被批准,因为它不是一个向量。
将 '([:d 4]) 仅连接到映射根本没有任何意义,而且不应该工作,但在 CLJS 中却可以工作。尤其是由于将 [[:d 4]] 连接到上不会工作。
它几乎就像 CLJS 不关心元素是一个列表还是仅仅是元素。
(conj {} [[:a 1] [:b 2]] '([:c 3] [:d 4]))
=> {[:a 1] [:b 2], :c 3, :d 4}