欢迎!请参阅关于页面以了解更多此如何运作的信息。
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 said: 这个想法似乎很合理,但现在可能不会优先考虑,除非我们遗漏了紧急使用案例。
[email protected] said: 这是一个很好的问题。get-source只需要文件名和行号。
如果IMeta是一个协议,它可以扩展到Class。那个实现可能会寻找一个“众所周知的”静态字段,可能是__clojure_meta或类似的东西?然后deftype只需要填充那个字段,get-source就准备好了。
这个计划有什么价值吗?是否有更好的地方存储文件名和行号?
评论者:gtrak
我可以用它来实现 cider 的文件/行跳转机制。
对于 records,我可以通过推导和查找相应的构造器变量来解决这个问题,但有点不优雅。
评论者:bozhidar
我也希望看到这个问题被修复。
评论者:jafingerhut
Bozhidar,在票务页面右侧点击投票链接可以对票进行投票,并将其推送到票的单页列表上。
Andy,谢谢你的提示。他们应该把按钮做得更大一些,我直到现在才发现它。
评论者:alexmiller
如果有人对这个问题做出了一些工作(如补丁),我会更加努力地进行推动。
评论者:baptiste
使用这种方法“工作”对我来说 =>
(source source-training.source/->Foo)