【发布时间】:2010-10-17 14:33:39
【问题描述】:
在 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 等效关键字参数,看起来不像有人引爆了标点符号?
【问题讨论】:
-
自从这个问题是最后一个活跃的关键字解构绑定已添加到 Clojure。我已经提供了一个答案来表明这一点。
-
@Brian 你应该考虑更新接受的答案。
标签: binding clojure lisp common-lisp params-keyword