我似乎很难理解下面的代码是如何工作的。更确切地说,是如何定义的函数处理传递的参数定义的“遭遇”时Clojure定义多方法以及如何传递参数
(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来[xy]或第二至[(:角色X)(:角色Y) ])。我只是不明白如何x得到价值:经理和y得到的价值:老板。
上面的例子是从这里:https://yogthos.github.io/ClojureDistilled.html