【发布时间】:2016-03-16 09:34:34
【问题描述】:
我似乎很难理解下面的代码是如何工作的。更确切地说,定义的函数如何处理传递的参数
(defmulti encounter
(fn [x y] [(:role x) (:role y)]))
(defmethod encounter [:manager :boss] [x y]
:promise-unrealistic-deadlines)
(defmethod encounter [:manager :developer] [x y]
:demand-overtime)
....
为什么在定义“遭遇”时我们有 2 个向量 ([x y] [(:role x) (:role y)])。这是否意味着该函数采用向量参数?如果是这样,为什么我必须像这样调用函数:
(encounter {:role :manager} {:role :boss})
上面的调用不是将第一个 hashmap 传递给 [x y],第二个传递给 [(:role x) (:role y)])。我只是不明白 x 是如何获得 :manager 的价值,而 y 是如何获得 :boss 的价值的。
【问题讨论】:
标签: clojure multimethod