欢迎!有关如何使用本网站的更多信息,请参阅关于页面。
clojure.repl/source对deftype不起作用
user> (deftype Foo [a b]) user.Foo user> (source Foo) 未找到源代码
原因: deftype创建了一个类,但没有创建变量,所以没有文件/行信息附加在任何地方。
方法
补丁
经
评论者:importer
由http://www.assembla.com/spaces/clojure/tickets/304转换而来
stu说:这听起来是个不错的想法,但现在可能暂时不会执行,除非我们错过了一些紧急的使用案例。
[email protected]说:这是一个很好的问题。get-source只需要一个文件名和行号。
如果IMeta是一个协议,它可以扩展到Class。该实现可能会寻找一个“众所周知”的静态字段,也许?__clojure_meta或者其他?然后,deftype只需要填充这个字段,get-source就可以设置完成了。
这个计划有合理性吗?是否有更好的地方来存储文件名和行号?
评论者:gtrak
我可以用这来为 cider 的文件/行跳转机制服务。
对于记录(records),我可以通过寻找相应的构造函数变量来解决这个问题,但这有点讨厌。
评论者:bozhidar
我也希望能解决这个问题。
评论者:jafingerhut
Bozhidar,在票务(在查看票务时点击页面右侧的“投票”链接)上进行投票可以帮助将票数提升1。
Andy,谢谢你的提示。他们应该让这个按钮更大一些,我之前一直没有注意到。
评论者:alexmiller
如果有人对这个问题做一些工作(比如一个补丁),我会进一步推动解决。
评论者:baptiste
使用这个 [>] 它对我“有效”:
(源 source-training.source/->Foo)