访问运行时所有interned关键字的列表对于实现编辑器自动完成和其他编辑器集成功能很有用。
目前,大多数工具都会做类似的事情
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结果,请参阅grep.app。