请在2024 Clojure状态调查中分享您的想法!

欢迎!请访问关于页面了解更多关于这个工作方式的信息。

0
ClojureScript
在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条目)

4 个回答

0

评论者:mfikes

CLJS-3115.patch通过CI (/)

0

评论者:mfikes

CLJS-3115.patch已添加到补丁捐助(i)

0

评论者:mfikes

CLJS-3115.patch通过Canary (/)

0
参考资料: https://clojure.atlassian.net/browse/CLJS-3115(由mfikes报告)
...