在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惯用法的关键字参数的等效方式,而不会看起来像有人引爆了一个标点符号炸弹?