有没有办法执行面向 Clojure 的反射?
Is there a way to perform Clojure-oriented reflection?
如果我有这样的函数
(defn ab_func [a b]
(* a b))
如何使用反射来确定 ab_func 有两个参数? clojure.reflect 似乎是 Java 反射机制的前端......我正在寻找某种程度的反射,不需要理解 clojure 的 Java 实现。
函数变量具有关联的元数据,可让您确定函数采用的参数数量,例如:
(-> (meta #'ab_func) :arglists first count)
=> 2
您可以通过调用 (meta #'ab_func)
.
来访问函数的参数列表
(此外,名称 ab-func
比 ab_func
更符合 Clojure 命名约定。)
如果我有这样的函数
(defn ab_func [a b]
(* a b))
如何使用反射来确定 ab_func 有两个参数? clojure.reflect 似乎是 Java 反射机制的前端......我正在寻找某种程度的反射,不需要理解 clojure 的 Java 实现。
函数变量具有关联的元数据,可让您确定函数采用的参数数量,例如:
(-> (meta #'ab_func) :arglists first count)
=> 2
您可以通过调用 (meta #'ab_func)
.
(此外,名称 ab-func
比 ab_func
更符合 Clojure 命名约定。)