请在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 said: 这个想法似乎很合理,但现在可能不会优先考虑,除非我们遗漏了紧急使用案例。

0

评论人:importer

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

如果IMeta是一个协议,它可以扩展到Class。那个实现可能会寻找一个“众所周知的”静态字段,可能是__clojure_meta或类似的东西?然后deftype只需要填充那个字段,get-source就准备好了。

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

0

评论者:gtrak

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

对于 records,我可以通过推导和查找相应的构造器变量来解决这个问题,但有点不优雅。

0

评论者:bozhidar

我也希望看到这个问题被修复。

0

评论者:jafingerhut

Bozhidar,在票务页面右侧点击投票链接可以对票进行投票,并将其推送到票的单页列表上。

0

评论者:bozhidar

Andy,谢谢你的提示。他们应该把按钮做得更大一些,我直到现在才发现它。

0

评论者:alexmiller

如果有人对这个问题做出了一些工作(如补丁),我会更加努力地进行推动。

0

评论者:baptiste

使用这种方法“工作”对我来说 =>

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

0
参考资料:https://clojure.atlassian.net/browse/CLJ-304(由 alex+import 提出)
...