Я пытаюсь использовать тип намека, чтобы различать два метода с одним аргументом.Как использовать тип hinting для создания многомерного метода Clojure с переменным числом аргументов?
Например, добавление вершины оборачивают метод Java, который может принимать переменное число аргументов, и поэтому здесь я пытаюсь сделать надстройку вершины взять ноль, один или два аргумента ...
(defmulti add-vertex (fn [& args] (map class args)))
(defmethod add-vertex [] (add-vertex nil nil))
(defmethod add-vertex Integer [id] (add-vertex id nil))
(defmethod add-vertex Map [props] (add-vertex nil props))
(defmethod add-vertex [Integer Map] [id props]
((let [vertex (. *g* addVertex id)]
(when props
(apply set-props vertex (interleave (map name (keys props)) (vals props))))
vertex)))
Обратите внимание, что есть две функции singe-arg - каждый из которых принимает другой тип (id - это Java Integer, а реквизит - карта Java). Я новичок в Clojure, поэтому я подозреваю, что делаю это совершенно неправильно.