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

欢迎!有关如何使用本站的更多信息,请参阅 关于 页面。

0
REPL

clojure.repl/source 在 deftype 上无法工作

user> (deftype Foo [a b]) user.Foo user> (source Foo) 源文件未找到

原因: deftype 创建了一个类,但不是变量,因此没有文件/行信息附加在任何地方。

方法

补丁

通过

10 个答案

0
0

评论者:importer

stu 表示:这似乎是个合理的想法,但现在我们把它放在一边,除非我们遗漏了紧急用例。

0

评论者:importer

[email protected] 表示:这是一个很好的问题。get-source 只需要文件名和行号。

如果 IMeta 是一个协议,可以将其扩展到 Class。这种实现可以寻找一个“知名”的静态字段,比如 __clojure_meta 或其他?然后,deftype 就需要填充这个字段,get-source 就可以使用了。

这个计划有什么意义吗?是否有更好的地方来存储文件名和行号?

0
by

评论来自:gtrak

我也可以用这个来为cider的文件/行跳转机制。

对于记录,我可以通过推导找到对应的构造器变量来解决它,但这有点讨厌。

0
by

评论来自:bozhidar

我也希望看到这个问题被修复。

0
by

评论来自:jafingerhut

Bozhidar,在门票上投票(在查看票证时点击页面右侧的投票链接)可以帮助将投票数增加1。

0
by

评论来自:bozhidar

Andy,谢谢你指出这一点。他们应该把这个按钮做得更大一些,我之前完全没有注意到。

0
by

评论来自:alexmiller

如果有人对这个(如补丁)做了些工作,我会更加努力地推动。

0
by

评论来自:baptiste

我用这个可以“工作”:

(source source-training.source/->Foo)

0
by
参考: https://clojure.atlassian.net/browse/CLJ-304(由alex+import报告)
...