In Clojure
user=> (conj {:a 1} '([:b 2] [:c 3]))
执行错误(ClassCastException)在用户/eval3(REPL:1)。
clojure.lang.PersistentVector无法转换为java.util.Map$Entry
但在ClojureScript中
cljs.user=> (conj {:a 1} '([:b 2] [:c 3]))
{:a 1, :b 2, :c 3}
有一个检查,以确保条目满足{{vector?}},但我们可以要求它们满足{{map-entry?}}。事实上,当{{vector?}}不满足时给出的错误消息是:“向map添加元素需要_{map entries}_或_{map条目可序列化}_。”
理由:尽管这项更改会拒绝一些程序,但这些程序是错误的(仅偶然有效),并且,如果移植到Clojure将在这里失败。此外,利用它们是map条目的事实可以访问它们的键和值,这可以使代码更快。(参见CLJS-3116中的利用map条目)