Clojure: destructure and rename with {:keys [...]}

use*_*062 2 clojure

Is it possible to both destructure and rename keys in one go?

Consider this:

(let [{:keys [response]} {:response 1}]
  (println response))
Run Code Online (Sandbox Code Playgroud)

However, if I want to instead refer to 1 as my-response, I have to do something like:

(let [{:keys [my-response]} (clojure.set/rename-keys {:response 1} {:response :my-response})]
  (println my-response))
Run Code Online (Sandbox Code Playgroud)

Obviously this does not work with defn destructuring.

Is there any way in Clojure to both destructure and rename keys?

Erw*_*ers 12

在不使用以下情况下使用解构:keys

(let [{my-response :response} {:response 1}]
  (println my-response))
Run Code Online (Sandbox Code Playgroud)

{:keys [response]}是的语法糖{response :response}