在 Common Lisp 中,您可以这样做:
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Clojure 没有关键字参数。一种替代方法是:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
嵌套的括号太多,不得不一直打字和阅读。它还需要一个显式的哈希映射作为参数而不是平面列表传入。
什么是最惯用的 Clojure 等效关键字参数,看起来不像有人引爆了标点符号?