在我正在进行的 Clojure 练习中,我有几个多方法,所有这些都只是identity
用作调度函数。例如:
(defmulti amount identity)
(defmulti bottles identity)
(defmulti pronoun identity)
(defmulti action identity)
(defmulti pred identity)
由于它们都使用相同identity
的分派函数,我想只迭代名称并调用defmulti
每个名称,而不是重复defmulti
调用。我试过这个:
(doseq [m '(amount bottles pronoun action pred)]
(defmulti m identity))
但是,当我这样做时,似乎defmulti
没有适当的效果,当我后来defmethod
用于任何多方法名称时,我收到一个错误,例如:
(defmethod amount 0 [n] "whatever")
CompilerException java.lang.RuntimeException: Unable to resolve symbol: amount in this context, compiling:(NO_SOURCE_PATH:1:1)
是否可以遍历符号或名称列表并调用defmulti
它们中的每一个,如果可以,如何完成?