spa*_*sue 2 macros expand function clojure args
有没有任何(合理的)方法可以将此宏编写为函数?
(defmacro assocTop
[v & args]
`(push (pop ~v)
(assoc (peek ~v) ~@args)))
Run Code Online (Sandbox Code Playgroud)
给定地图向量和一些关联,宏代码将关联应用于顶部/查看的地图。
但是,当尝试将其编写为函数时,我无法弄清楚如何~@args以合法的方式扩展。在普通函数中,有没有办法将args,我相信其形式(:a 3 :bb 44 :cd 90,...)变成:a 3 :bb 44 :cd 90,...,即没有括号?
我想你应该使用applywhich will apply assocto(peek v)和expanded args。
(defn assocTop
[v & args]
(push (pop v)
(apply assoc (peek v) args)))
(=
(assocTop [{:a :b} {:c :d} {:e :f, :g :h}] :e :z)
[{:a :b} {:c :d} {:g :h, :e :z}]) ; => true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |