诸如docstring之类的变量的元数据可以这样读取:这里使用函数map
作为示例:
(-> cljs.core/map var meta :doc)
;= "Returns a lazy sequence consisting of the result of appl....
当只将函数名称及其名称空间作为字符串("cljs.core/map"
)时,我需要做些什么来获得相同的结果?
使用函数symbol
包装字符串会产生错误。
答案 0 :(得分:1)
这是一种方法:
* Clojure文件*
(ns myproject.macros
(:require [clojure.string :as str]))
(defmacro doc1 [s]
(let [sym (apply symbol (str/split s #"/"))]
`(-> ~sym (var) (meta) :doc)))
* ClojureScript文件*
(ns myproject.main
(:require-macros [myproject.macros :as m]))
(prn (m/doc1 "cljs.core/inc"))
=> “返回大于num的数字。”