Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Clojure中,如何将多个参数传递给defmethod?_Clojure - Fatal编程技术网

在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)
:奇数
用户=>