Могу ли я использовать мультиметоды Clojure только для классов Java? - PullRequest
2 голосов
/ 01 января 2011

Меня немного смущает вопрос, могу ли я использовать только мультиметоды clojure на структурах clojure, представленных классами Java, или я могу использовать мультиметоды для диспетчеризации на структурах или других свойствах?

Ответы [ 3 ]

4 голосов
/ 02 января 2011

Очень часто создаются мультиметоды, которые отправляют в класс первого или единственного аргумента.В этом случае «класс» может быть классом Java, записью (defrecord создает класс Java) или даже внутренним типом Clojure, таким как ISeq.

Вы также можете отправить произвольную функцию из аргументов, переданных функции.Например, вы можете вычислить функцию и отправить ключевое слово, если хотите.

3 голосов
/ 02 января 2011

Вы можете отправлять мультиметоды по произвольной функции аргументов (эта функция передается как второй аргумент defmulti. http://clojure.org/multimethods предоставляет более подробную информацию.

2 голосов
/ 02 января 2011

Вы можете отправлять мультиметоды с помощью любой выбранной вами функции.

...