Clojure:函数的完全限定名称

chr*_*ris 5 namespaces clojure

在Clojure中,是否有更优雅的方法来查找函数的完全限定名称(已知具有元信息)

(defn fully-qualified-name [fn]
  (let [fn-meta (meta fn )
        fn-ns (ns-name (:ns fn-meta))
        ]
    (str fn-ns "/" (:name fn-meta))))
Run Code Online (Sandbox Code Playgroud)

需要运行时解决方案.欢迎阅读时和编译时解决方案.

Stu*_*rra 10

(resolve 'foo) 返回名为"foo"的Var及其完全限定名称.


Bel*_*lun 5

语法引用怎么样?它会自动进行资格认证。使用 ` 代替 '

user=> `(inc)
(clojure.core/inc)
user=> `(fn)
(clojure.core/fn)
Run Code Online (Sandbox Code Playgroud)