8
我希望建立一個多方法我稱之爲這樣的:在Clojure中,我如何將多個參數傳遞給defmethod?
(defmethod some-method "some value"
[ a b ]
b)
:但其選擇僅基於所述第一放慢參數「A」的功能。我怎樣才能做到這一點:
(defmulti some-method
WHAT GOES HERE?)
我希望建立一個多方法我稱之爲這樣的:在Clojure中,我如何將多個參數傳遞給defmethod?
(defmethod some-method "some value"
[ a b ]
b)
:但其選擇僅基於所述第一放慢參數「A」的功能。我怎樣才能做到這一點:
(defmulti some-method
WHAT GOES HERE?)
我沒有完全理解你的問題,但我想你想 派遣只能在一個參數。你可以這樣做,我認爲:
user=> (defmulti even-or-odd (fn [x _] (even? x)))
#'user/even-or-odd
user=> (defmethod even-or-odd true [a _] :even)
#<MultiFn [email protected]>
user=> (defmethod even-or-odd false [a _] :odd)
#<MultiFn [email protected]>
user=> (even-or-odd 2 3)
:even
user=> (even-or-odd 3 3)
:odd
user=>
你的意思是選用基於值的功能?
然後你只需要
(defmulti some-method (fn [a b] a))