Именованные параметры функций в Clojure - PullRequest
3 голосов
/ 12 апреля 2011

Этот код обсуждает именованные аргументы в Clojure из «Радости Clojure»:

(defn slope [& {:keys [p1 p2] :or {p1 [0 0] p2 [1 1]}}] 
   (float (/ (- (p2 1) (p1 1))
             (- (p2 0) (p1 0)))))

(slope :p1 [4 15] :p2 [3 21])

Сама функция, как я понимаю, - нет проблем с деструктуризацией - но я не понимаю вызов.
Мы передаем четыре аргумента на склон?как векторы назначаются: p1 и: p2?

1 Ответ

8 голосов
/ 12 апреля 2011

Вы передаете четыре аргумента склону, да.Часть [] в slope указывает параметры, в которых & означает «вылить все дополнительные параметры в эту форму», что затем указывает, что он ищет аргументы, которые формируют карту с ключами p1 и * 1005.* (и дает значения по умолчанию, если их не существует).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...