Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问参数';Clojure宏中的元数据_Clojure_Macros - Fatal编程技术网

访问参数';Clojure宏中的元数据

访问参数';Clojure宏中的元数据,clojure,macros,Clojure,Macros,有没有一种方法可以在不使用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] (

有没有一种方法可以在不使用
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
函数获取与符号相关联的var