使用ClojureScript中的关键字访问记录字段与Clojure中的不一样
当我尝试这个:使用ClojureScript中的关键字访问记录字段与Clojure中的不一样,clojure,clojurescript,Clojure,Clojurescript,当我尝试这个: (defrecord Attr[具有默认值]) (def attr(->attr true 1)) (获取属性:默认值);;=>1. (:默认属性);;=>ClojureScript返回nil,Clojure返回1 使用关键字访问时的行为差异是预期的吗?关于Clojure和ClojureScript之间的差异,我在[docs][1]中找不到任何相关内容 更新2020-08-04 删除。见下一页 更新2020-08-06 有人指出,我以前的更新包含导致问题的拼写错误。我已经删除了
(defrecord Attr[具有默认值])
(def attr(->attr true 1))
(获取属性:默认值);;=>1.
(:默认属性);;=>ClojureScript返回nil,Clojure返回1
使用关键字访问时的行为差异是预期的吗?关于Clojure和ClojureScript之间的差异,我在[docs][1]中找不到任何相关内容
更新2020-08-04
删除。见下一页
更新2020-08-06
有人指出,我以前的更新包含导致问题的拼写错误。我已经删除了更新,而不是把它作为一个陷阱留给未来的读者
它不会改变原始观察结果或解决方案
[1]: https://www.clojurescript.org/about/differences#_data_structures
已证实的看起来像只虫子。您应该向
clojure@googlegroups.com
我用shadow cljs测试了它,得到了同样奇怪的行为。您可以使用:has default
在attr
中查找值,但是:default
不起作用,尽管它是其中一个键:这与default
有关,因为default
过去是一个保留的JS文本,所以有时会被选中default$
。不完全确定在什么情况下会发生这种情况。现在,官方报道这类事情的地方是@Thomas Heller:这似乎是个问题。通过将default
更改为不同的内容,如default val
,它在我想到的任何地方都能正常工作。谢谢