Я хочу создать мульти-метод, который я называю так:
(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=>
Вы имеете в виду выбрать функцию на основе значения из?
Тогда вам просто нужно
(defmulti some-method (fn [a b] a))