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](https://clojure.atlassian.net/browse/CLJS-871)(由noprompt报告)
...