【问题标题】:Return the args which are not passed as nil inside the function返回函数内部未作为 nil 传递的 args
【发布时间】:2019-08-01 13:56:18
【问题描述】:
(defn bar[{:keys [a b] :as args}] (prn "got" args))

如果我们将上述函数调用为

(bar {:a 1})

返回

{:a 1}
nil 

我想拥有

{:a 1 :b nil}

【问题讨论】:

    标签: dictionary clojure defn


    【解决方案1】:

    我认为如果不更改 Clojure 解构代码的实现,就无法做到这一点。低于满意吗?

    user=> (defn bar [{:keys [a b]}] (prn "got" {:a a, :b b}))
    #'user/bar
    user=> (bar {:a 1})
    "got" {:a 1, :b nil}
    

    【讨论】:

      【解决方案2】:

      不确定是否值得麻烦,但您可以使用 vals->mapfrom 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}
      

      【讨论】:

        猜你喜欢
        • 2020-01-05
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多