【发布时间】:2014-09-30 21:16:51
【问题描述】:
我有一个 defmulti/defmethod 组,它采用这样的成对参数...
(defmulti foo "some explanation" (fn [arg1 arg2] (mapv class [arg1 arg2])))
(defmethod foo [N P] (->L 1 2 3))
(defmethod foo [L P] (->N 5))
(defmethod foo [P N] (->L 6 7 8))
...
以您可能期望的方式调用。
(foo (->N 9) (->P 9))
我想用超过 2 个参数调用“foo”。 我知道如何使用函数来做到这一点,我想我可以使用一些包装函数将 args 拆分成对,然后组合结果(或者只使用“reduce”),但这似乎是错误的。
那么我的问题是... 在clojure中定义可变参数多功能的惯用方式是什么?
【问题讨论】:
-
与使常规函数可变的方法相同 - 为调度函数和
defmethod主体提供可变签名。 -
谢谢,我刚刚找到这个...stackoverflow.com/questions/10313657/…
标签: clojure polymorphism variadic