好吧,在这种情况下,使代码正常工作的数据意义很小。
Conj可以将一个包含两个元素的向量并到具有精确语义的映射中。将向量列表拼接在一起不应该工作。
换句话说,(conj {} [[:a 1] [:b 2]])是合理的,因为我们正在合并两个向量并向量是[:a 1] [:b 2]。
然而,(conj {} '([:a 1] [:b 2]))可能是不合理的,因为它不是一个向量。
将'([:d 4])简单地拼接到映射中没有任何意义,也不应该工作,但在CLJS中它却可以工作。特别是自从conj [[:d 4]] 也不能工作。
这几乎像是CLJS不在乎它是元素的列表还是单纯的一些元素。
(conj {} [[:a 1] [:b 2]] '([:c 3] [:d 4]))
=> {[:a 1] [:b 2], :c 3, :d 4}