如果我有一个像有没有办法执行面向Clojure的反射?
(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实现的反射级别。
功能瓦尔有:
(-> (meta #'ab_func) :arglists first count)
=> 2
相关的元数据,使您能够确定一个函数具有参数的数目,e.g你可以通过调用(meta #'ab_func)
可以访问该函数的参数列表。
(此外,名ab-func
会更符合Clojure的命名convenctions比ab_func
)
感谢关于命名约定的说明......我只是在学习clojure。 – AdamC 2015-02-23 15:27:56
这是最接近的Clojure有一个通用的反射机制,但要注意,它仅适用于使用自定义函数'defn'。由于元数据附加到var,因此它不适用于使用'(fn)'创建的匿名函数。 – Alex 2015-02-23 15:10:17
知道这真的很有用,谢谢。看起来像一个奇怪的疏忽。 – AdamC 2015-02-23 15:27:18