我希望创建一个这样的多重方法:

(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 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=>

关于clojure - 在Clojure中,如何将多个参数传递给defmethod?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5570891/

10-11 01:14