请在2024 Clojure 状态调研!中分享您的想法。

欢迎!有关本平台更多信息,请参阅关于页面。

+4
该图片无法显示 REPL
重新标记

访问运行时所有内联关键字的列表对于实现编辑器自动完成和其他编辑器集成特性非常有用。

目前,大多数工具都这样做

user=> (let [field (.getDeclaredField clojure.lang.Keyword "table")] (.setAccessible field true) (map keyword (.keySet (.get field nil))))
(:target :clojure.main/message :clojure.spec.alpha/unknown :datafy :clojure.core.specs.alpha/prefix :dir :clojure.core.specs.alpha/binding-form :allow ...)

然而,这种方法依赖于反射来获取私有、静态字段。底层数据可能(尽管可能性很小)在未通知的情况下更改。

是否有可能在 clojure.core 中添加一个函数,以返回运行时所有关键字的列表?可能是 (all-keywords)(类似于 (all-ns))。或者可能是对 clojure.lang.Keyword 的公开静态方法?

有关此模式的更多信息,请参阅 grep.app 的结果。

1 答案

0
该图片无法显示
选中
 
最佳答案
...