在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))))
一個運行時的解決辦法是找到一個函數(已知有元信息)的全名的更優雅的方式需要。歡迎閱讀和編譯時間解決方案。
在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))))
一個運行時的解決辦法是找到一個函數(已知有元信息)的全名的更優雅的方式需要。歡迎閱讀和編譯時間解決方案。
(resolve 'foo)
返回瓦爾名爲‘foo’,其完全限定名稱。
的ToString的輸出可以讓你開始:
user=> (.toString map)
"[email protected]"
也寫成(str映射)得到完全限定的名字use(str'map) – 2010-09-22 17:54:36
type
給出了一個完全限定的名稱,無論元信息如何。
它是否必須在函數中(而不是編譯時在宏或REPL中)? – mikera 2010-09-21 15:30:31