Clojure China

一个用macro生成函数的问题

#1

可以看我在 so 上的提问:

大家看看有什么好的解决方法嘛

#2

采用如下方法解决:

(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 可以动态生产