2024年Clojure调查问卷中分享您的想法!

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

0
REPL

clojure.repl/source 不能在 deftype 上工作

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

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

方法

补丁

通过请求筛选

10 个答案

0
0

评论者:importer

stu 说:这是一个合理的想法,但现在会被放在一边,除非错过了紧急用例。

0

评论者:importer

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

如果IMeta是一个协议,它可以扩展到Class。该实现可以查找"已知"静态字段,也许?__clojure_meta或其他类似的东西?然后deftype只需填充该字段,get-source就可以设置好了。

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

0

评论者:gtrak

我也可以用这个在cider的文件/行跳转机制中。

对于记录,我可以通过推导和找到相应的构造器变量来解决这个问题,但这有点糟。

0

评论者:bozhidar

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

0

评论者:jafingerhut

Bozhidar,在票据上投票(点击查看票案权限中的投票链接)可以帮助将票数提高1。

0

评论者:bozhidar

Andy,感谢指引。他们应该让这个按钮更大一些,我现在才注意到。

0

评论者:alexmliller

如果有人在这方面做了工作(比如补丁),我会更加推进。

0

评论者:baptiste

使用这个 =>

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

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