在Clojure中,如何将多个参数传递给defmethod?
我希望创建一个多方法,我这样调用它:在Clojure中,如何将多个参数传递给defmethod?,clojure,Clojure,我希望创建一个多方法,我这样调用它: (defmethod some-method "some value" [ a b ] b) :但它仅基于第一个参数“a”选择函数。我如何做到这一点: (defmulti some-method WHAT GOES HERE?) 您的意思是根据a的值选择函数吗 那你只需要 (defmulti some-method (fn [a b] a)) 我不完全理解你的问题,但我认为你想理解 仅对一个参数进行分派。你可以这样做,我想: user=&g
(defmethod some-method "some value"
[ a b ]
b)
:但它仅基于第一个参数“a”选择函数。我如何做到这一点:
(defmulti some-method
WHAT GOES HERE?)
您的意思是根据a的值选择函数吗 那你只需要
(defmulti some-method (fn [a b] a))
我不完全理解你的问题,但我认为你想理解 仅对一个参数进行分派。你可以这样做,我想:
user=> (defmulti even-or-odd (fn [x _] (even? x)))
#'user/even-or-odd
user=> (defmethod even-or-odd true [a _] :even)
#<MultiFn clojure.lang.MultiFn@293bdd36>
user=> (defmethod even-or-odd false [a _] :odd)
#<MultiFn clojure.lang.MultiFn@293bdd36>
user=> (even-or-odd 2 3)
:even
user=> (even-or-odd 3 3)
:odd
user=>
user=>(defmulti偶数或奇数(fn[x_u](偶数?x)))
#'用户/偶数或奇数
user=>(defmethod偶数或奇数true[a ux]:偶数)
#
user=>(defmethod偶数或奇数假[a u3;]:奇数)
#
用户=>(偶数或奇数2 3)
:偶数
用户=>(偶数或奇数3)
:奇数
用户=>