在Clojure中,是否有更优雅的方法来查找函数的完全限定名称(已知具有元信息)而不是
(defn fully-qualified-name [fn]
(let [fn-meta (meta fn )
fn-ns (ns-name (:ns fn-meta))
]
(str fn-ns "/" (:name fn-meta))))
需要运行时解决方案。欢迎阅读时和编译时解决方案。
答案 0 :(得分:10)
(resolve 'foo)
返回名为“foo”的Var及其完全限定名称。
答案 1 :(得分:2)
语法引用怎么样?它有自动资格。使用`而不是'
user=> `(inc)
(clojure.core/inc)
user=> `(fn)
(clojure.core/fn)
答案 2 :(得分:2)
type
都会提供完全限定的名称。
答案 3 :(得分:1)
.toString的输出可以让你开始:
user=> (.toString map)
"clojure.core$map@11af7bb"