可以看我在 so 上的提问:
大家看看有什么好的解决方法嘛
采用如下方法解决:
(defmacro defapihandler [handler-name params & body]
(let [param-keys (map (comp symbol name :key) params)]
`(defn ~handler-name [passed-param#]
(let [{:keys [~@param-keys]} passed-param#]
;; some check
(do ~@body)))))
在 Clojure 里面,进行 destructuring
时,destructuring
的结构必须明确声明,symbol
可以动态生产