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

欢迎!请参阅关于页面以获取有关这一操作的更多信息。

0
ClojureScript
在 Clojure 中


用户=> (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 需要的是_映射条目_或_映射条目的序列_。”

理由:尽管此更改会拒绝一些程序,但这些程序是不正确的(事故性地正确),并且如果它们迁移到 Clojure 将会失败。此外,利用它们是映射条目的这一事实将允许访问它们的键和值,这可以导致代码运行更快。(请参阅 CLJS-3116 中的利用映射条目)

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报告)
...