gpt4 book ai didi

function - Clojure:如何将剩余参数 "& args"发送到列表中?

转载 作者:行者123 更新时间:2023-12-02 22:25:49 26 4
gpt4 key购买 nike

有什么(合理的)方法可以将这个宏写成一个函数吗?

(defmacro assocTop
[v & args]
`(push (pop ~v)
(assoc (peek ~v) ~@args)))

给定 map 向量和一些关联,宏代码将关联应用于顶部/查看 map 。

但是,当尝试将它写成一个函数时,我不知道如何以合法的方式扩展 ~@args。在普通函数中,有没有办法将 args 转换为 ,我认为它的形式为 (:a 3 :bb 44 :cd 90,...) >:a 3 :bb 44 :cd 90,... ,即没有 parent ?

最佳答案

我猜你应该使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com