我想从哈希图构建动态 condp。
我有以下结构:
[{ :value 50 :ret "value50"}
{ :value 100 :ret "value100 }]

我想动态创建以下 condp:

(condp < n
50 "value50"
100 "value100"
"default")

我应该使用宏来创建这个表达式吗?

最佳答案

是的。宏将为您生成正确的表格。

(defmacro mycondp
  [pred expr coll]
  `(condp ~pred ~expr
     ~@(mapcat (juxt :value :ret) coll)
     "default"))

例子:
(macroexpand-1 '(mycondp < n [{:value 50 :ret "value50"}]))
;; => (clojure.core/condp < n 50 "value50" "default")

关于clojure - 从哈希图向量构建 condp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27135915/

10-10 00:55