在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的conj操作接受_map条目_或_map条目_的可序列化元素。”
理由:即使这个更改会拒绝一些程序,但这些程序是错误的(只是偶然有效),并且如果转换到Clojure将会失败。此外,利用它们是map条目的这一事实,可以访问它们的键和值,这可以提高代码的速度。(见CLJS-3116中的利用map条目)