我想从哈希图构建动态 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/