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?}} 不满足时给出的错误信息是:“在映射上 conj 需要的是 _map entries_ 或 _map entries_ 的可序列化对象”。

理由:即使此更改将拒绝一些程序,但这些程序是错误的(意外工作),并且,如果移植到 Clojure,将失败。此外,利用它们是映射条目的事实可以访问它们的键和值,这可以导致代码更快。 (参见 CLJS-3116 中的利用映射条目)

4 个答案

0

评论由:mfikes 提出

CLJS-3115.patch 通过 CI (/)

0

评论由:mfikes 提出

CLJS-3115.patch 添加到补丁割草 (i)

0

评论由:mfikes 提出

CLJS-3115.patch 通过金丝雀 (/)

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