这段代码在“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?
答案 0 :(得分:8)
你正在向坡度传递四个论点,是的。 []
的{{1}}部分指定了参数,其中slope
表示“将所有其他参数粘贴到此表单中”,然后指定它正在查找形成带有键的映射的参数&
和p1
(如果不存在则提供默认值)。