如果我有像
这样的功能(defn ab_func [a b]
(* a b))
如何使用反射来确定ab_func是否有两个参数? clojure.reflect似乎是Java反射机制的前端......我正在寻找一些不需要理解clojure的Java实现的反射级别。
答案 0 :(得分:6)
函数变量具有关联的元数据,允许您确定函数所使用的参数数量,例如:
(-> (meta #'ab_func) :arglists first count)
=> 2
答案 1 :(得分:2)
您可以通过调用(meta #'ab_func)
来访问函数的参数列表。
(此外,名称ab-func
将更符合Clojure命名规则而不是ab_func
。)