我希望创建一个多方法,我称之为:
(defmethod some-method "some value"
[ a b ]
b)
:但仅选择基于第一个参数'a'的函数。我该怎么做:
(defmulti some-method
WHAT GOES HERE?)
答案 0 :(得分:8)
我没有完全理解你的问题,但我想你想 仅在一个参数上发送。你可以这样做,我想:
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=>
答案 1 :(得分:6)
您的意思是根据?
的值选择功能然后你需要
(defmulti some-method (fn [a b] a))