我正在尝试在clojure中创建一些动态代码.在下面的函数中,我们的想法是动态生成(和)宏的条件.
(defn matching-keys [rec match-feed keys]
(> (count (clojure.set/select #(and (for [k keys]
(= (% k) (rec k))))
(set match-feed)))
0))
Run Code Online (Sandbox Code Playgroud)
所以,如果它工作!! 然后这个代码会在传递以下键时生成(和)类似的东西[:tag :attrs]:
(and (= (% :tag) (rec :tag))
(= (% :attrs) (rec :attrs)))
Run Code Online (Sandbox Code Playgroud)
我一直在搞乱各种各样的`` and〜操作员,试图让它起作用,现在我处于混乱状态.欢迎任何指导.
谢谢,
科林
小智 5
您不需要为此动态生成代码.将匿名函数更改为#(every? (fn [k] (= (% k) (rec k))) keys)应该执行的操作而不在运行时生成代码.
使用高阶函数的能力意味着您几乎不需要动态生成代码.
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |