我似乎很難理解下面的代碼是如何工作的。更確切地說,是如何定義的函數處理傳遞的參數定義的「遭遇」時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