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

欢迎!请参阅 关于 页面以获取有关该功能的更多信息。

0
REPL

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

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

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

方法

补丁

10 个答案

0

评论者:导入器

http://www.assembla.com/spaces/clojure/tickets/304 转换

0

评论者:导入器

stu said: 看起来这是一个合理的想法,但除非我们有遗漏的紧急用例,否则现在我们将将其归入低优先级。

0

评论者:导入器

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

如果 IMeta 是一个协议,它可以扩展到 Class。这种实现可以查找“已知”静态字段,也许? __clojure_meta 或类似的东西?然后 deftype 就只需要填充该字段,get-source 就准备好了。

这个计划有何价值?是否有更好的地方来存储文件名和行号?

0

评论者:gtrak

我可以使用这个来实现cider的文件/行跳转机制。

对于记录,我可以通过推导和找到相应的构造器变量来解决这个问题,但有点复杂。

0

评论者:bozhidar

我也想看到这个问题被解决。

0

评论者:jafingerhut

Bozhidar,在票务页面上(查看票务时点击右侧的“投票”链接)进行投票可以帮助将票务提升1票。

0

评论者:bozhidar

Andy,感谢您的指正。他们应该把这个按钮做得更大,我之前都没有注意到。

0

评论者:alexmiller

如果有人对这个进行了工作(比如一个补丁),我会更积极地推动。

0

评论者:baptiste

使用这个可以为我“工作”:

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

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