2024年Clojure状态调查!中分享你的想法。

欢迎!请参阅关于页面以获取更多有关此信息。

0
ClojureScript

使用deftype/defrecord定义并具有{{default}}字段的类型在属性访问中将错误地返回{{nil}}。以下示例将返回{{nil}}。

`
(deftype Foo [default])

(let [foo (Foo. "bar")]
(.-default foo))
`

9 条回答

0

评论由:noprompt发表

附带补丁。我应该指出,我不得不从编译器命名空间借用js-reserved,提供的警告信息硬编码了munged符号信息而不是重用编译器的munge fn。

0

评论由:noprompt发表

为了历史资料的完整性,我应该提供更多关于这个补丁的上下文(由于某种原因,我无法编辑问题标题)。不仅{{.-default}},任何也是JavaScript标识符的属性名称(例如{{public}}、{{private}}、{{if}})也是如此。

0

评论由:dnolen发表

请将{{js-reserved}}及任何助手函数如{{munge}}提升到共享命名空间{{cljs.util}},以便共享逻辑并避免硬编码。谢谢。

0

评论由:noprompt发表

你确定吗,David?这可能让这个补丁变得更嘈杂。如果没有问题,我很乐意这么做。

0

评论由:dnolen发表

我确定,我想避免这种代码重复。最终会更整洁,并且向前推进得更好。

0

评论由:noprompt发表

已更新为使用新的重构

0

评论由:dnolen发表

警告并不令人满意。相反,我们应该只是混合并确保属性访问始终有效。

0

评论由:dnolen发表

现在我们有CLJS-1620,一个警告似乎是一个好的答案。

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