在 Clojure 宏中访问参数的元数据
Accessing argument's metadata in Clojure macro
有没有办法在不使用 eval
的情况下检索 clojure 宏中参数的元数据?到目前为止我唯一能想到的是:
(def ^{:a :b} my-var)
(defmacro my-macro [s] (prn (eval `(meta (var ~s)))))
(my-macro my-var)
;; Prints {:a :b, :name my-var, ...}
我最终找到了解决方案:
(def ^{:a :b} my-var)
(defmacro my-macro [s] (prn (meta (resolve s))))
(my-macro my-var)
;; Prints {:a :b, :name my-var, ...}
所以这里的关键部分是使用resolve
函数来获取与符号关联的变量。
有没有办法在不使用 eval
的情况下检索 clojure 宏中参数的元数据?到目前为止我唯一能想到的是:
(def ^{:a :b} my-var)
(defmacro my-macro [s] (prn (eval `(meta (var ~s)))))
(my-macro my-var)
;; Prints {:a :b, :name my-var, ...}
我最终找到了解决方案:
(def ^{:a :b} my-var)
(defmacro my-macro [s] (prn (meta (resolve s))))
(my-macro my-var)
;; Prints {:a :b, :name my-var, ...}
所以这里的关键部分是使用resolve
函数来获取与符号关联的变量。