作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么(合理的)方法可以将这个宏写成一个函数吗?
(defmacro assocTop
[v & args]
`(push (pop ~v)
(assoc (peek ~v) ~@args)))
给定 map 向量和一些关联,宏代码将关联应用于顶部/查看 map 。
但是,当尝试将它写成一个函数时,我不知道如何以合法的方式扩展 ~@args
。在普通函数中,有没有办法将 args
转换为 ,我认为它的形式为
,即没有 parent ?(:a 3 :bb 44 :cd 90,...)
>:a 3 :bb 44 :cd 90,...
最佳答案
我猜你应该使用 apply
这会将 assoc
应用到 (peek v)
并扩展 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
关于function - Clojure:如何将剩余参数 "& args"发送到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12986639/
我是一名优秀的程序员,十分优秀!