Clojure - 用于将地图条目自动转换为函数参数的语法糖?

haw*_*eye 3 function clojure map

假设我有以下clojure函数调用:

(def mymap {:a1 1 :a2 2})

(defn my-adder [input-map]
    (let [a1 (:a1 input-map)
          a2 (:a2 input-map)]
      (+ a1 a2)))

(my-adder mymap)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是通过将地图自动转换为params来使my-adder函数更简单的方法 - 例如:

(defn my-adder [(magic-function input-map)]
  (+ a1 a2))
Run Code Online (Sandbox Code Playgroud)

有人能指出我缺少的东西吗?

Dan*_*lan 5

我认为你正在寻找的是解构.这是你可以做的:

(def mymap {:a1 1 :a2 2})

(defn my-adder [{:keys [a1 a2]}]
      (+ a1 a2))

(my-adder mymap)
Run Code Online (Sandbox Code Playgroud)

你可以在这里了解更多相关信息.