我只能在Java类上使用Clojure多方法吗?

时间:2011-01-01 20:06:46

标签: clojure multimethod

我对是否只能在Java类所代表的clojure结构上使用clojure multimethods感到困惑,或者我可以将多种方法基于结构或其他属性进行调度吗?

3 个答案:

答案 0 :(得分:4)

构建在第一个或唯一参数的类上分派的多方法是很常见的。在这种情况下,“类”可以是Java类,记录(defrecord生成Java类),甚至是像ISeq这样的内部Clojure类型。

您还可以调度传递给函数的args的任意函数。例如,如果需要,您可以计算函数并对关键字进行调度。

答案 1 :(得分:3)

您可以在参数的任意函数上调度多方法(该函数作为第二个参数传入defmultihttp://clojure.org/multimethods提供更多详细信息。

答案 2 :(得分:2)

您可以在您选择的任何功能上进行多方法调度。