我对是否只能在Java类所代表的clojure结构上使用clojure multimethods感到困惑,或者我可以将多种方法基于结构或其他属性进行调度吗?
答案 0 :(得分:4)
构建在第一个或唯一参数的类上分派的多方法是很常见的。在这种情况下,“类”可以是Java类,记录(defrecord生成Java类),甚至是像ISeq这样的内部Clojure类型。
您还可以调度传递给函数的args的任意函数。例如,如果需要,您可以计算函数并对关键字进行调度。
答案 1 :(得分:3)
您可以在参数的任意函数上调度多方法(该函数作为第二个参数传入defmulti
。http://clojure.org/multimethods提供更多详细信息。
答案 2 :(得分:2)
您可以在您选择的任何功能上进行多方法调度。