【发布时间】:2015-02-23 22:57:19
【问题描述】:
如果我有类似的功能
(defn ab_func [a b]
(* a b))
如何使用反射来确定 ab_func 有两个参数? clojure.reflect 似乎是 Java 反射机制的前端......我正在寻找某种程度的反射,它不需要了解 clojure 的 Java 实现。
【问题讨论】:
标签: clojure
如果我有类似的功能
(defn ab_func [a b]
(* a b))
如何使用反射来确定 ab_func 有两个参数? clojure.reflect 似乎是 Java 反射机制的前端......我正在寻找某种程度的反射,它不需要了解 clojure 的 Java 实现。
【问题讨论】:
标签: clojure
函数变量具有关联的元数据,可让您确定函数采用的参数数量,例如:
(-> (meta #'ab_func) :arglists first count)
=> 2
【讨论】:
defn 定义的函数。由于元数据附加到 var,因此它不适用于使用 (fn) 创建的匿名函数。
您可以通过调用(meta #'ab_func) 来访问函数的参数列表。
(另外,名称ab-func 比ab_func 更符合Clojure 命名约定。)
【讨论】: