(defn bar[{:keys [a b] :as args}] (prn "got" args))
如果我们将上述函数调用为
(bar {:a 1})
返回
{:a 1}
nil
我想拥有
{:a 1 :b nil}
答案 0 :(得分:4)
我认为如果不更改Clojure的解构代码的实现,就无法做到这一点。低于令人满意吗?
user=> (defn bar [{:keys [a b]}] (prn "got" {:a a, :b b}))
#'user/bar
user=> (bar {:a 1})
"got" {:a 1, :b nil}
答案 1 :(得分:1)
不确定是否值得这么做,但是您可以使用vals->map
宏from the Tupelo library来进一步了解:
(defn whiffer
[{:keys [a b]}]
(vals->map a b) )
结果:
(whiffer {:a 1, :b 2}) => {:a 1, :b 2}
(whiffer {:a 1}) => {:a 1, :b nil}