欢迎!有关如何使用本站的更多信息,请参阅 关于 页面。
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的文件/行跳转机制。
对于记录,我可以通过推导找到对应的构造器变量来解决它,但这有点讨厌。
评论来自:bozhidar
我也希望看到这个问题被修复。
评论来自:jafingerhut
Bozhidar,在门票上投票(在查看票证时点击页面右侧的投票链接)可以帮助将投票数增加1。
Andy,谢谢你指出这一点。他们应该把这个按钮做得更大一些,我之前完全没有注意到。
评论来自:alexmiller
如果有人对这个(如补丁)做了些工作,我会更加努力地推动。
评论来自:baptiste
我用这个可以“工作”:
(source source-training.source/->Foo)