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

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

0
REPL

clojure.repl/source对deftype不起作用

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

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

方法

补丁

10 个答案

0

评论者:importer

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

0

评论者:importer

stu说:这听起来是个不错的想法,但现在可能暂时不会执行,除非我们错过了一些紧急的使用案例。

0

评论者:importer

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

如果IMeta是一个协议,它可以扩展到Class。该实现可能会寻找一个“众所周知”的静态字段,也许?__clojure_meta或者其他?然后,deftype只需要填充这个字段,get-source就可以设置完成了。

这个计划有合理性吗?是否有更好的地方来存储文件名和行号?

0

评论者:gtrak

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

对于记录(records),我可以通过寻找相应的构造函数变量来解决这个问题,但这有点讨厌。

0

评论者:bozhidar

我也希望能解决这个问题。

0

评论者:jafingerhut

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

0

评论者:bozhidar

Andy,谢谢你的提示。他们应该让这个按钮更大一些,我之前一直没有注意到。

0

评论者:alexmiller

如果有人对这个问题做一些工作(比如一个补丁),我会进一步推动解决。

0

评论者:baptiste

使用这个 [>] 它对我“有效”:

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

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