clojure - 在clojure中为var-args传递向量的最惯用的方法是什么?

标签 clojure

假设我有一个要放入 map 的键值对向量。

(def v [k1 v1 k2 v2])

我做这样的事情:
(apply assoc (cons my-map v))

事实上,我发现自己在做这种模式,
(apply some-function (cons some-value some-seq))

在过去的几天里好几次。这是惯用的,还是有更好的方法将参数从序列中移动到函数中?

最佳答案

apply在函数名和最后一个 seq 参数之间接受额外的参数。

user> (doc apply)
-------------------------
clojure.core/apply
([f args* argseq])
  Applies fn f to the argument list formed by prepending args to argseq.

就是这样args*方法。所以你可以这样做:
user> (apply assoc {} :foo :bar [:baz :quux])
{:baz :quux, :foo :bar}
user> (apply conj [] :foo :bar [:baz :quux])
[:foo :bar :baz :quux]

关于clojure - 在clojure中为var-args传递向量的最惯用的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160806/

相关文章:

clojure - 复合形式和特殊形式之间的区别

clojure - 在 Clojure 中从分层树结构创建 ids HashMap 的优雅方法

clojure - 为什么我无法在 intellij idea ID 中启动黑色服务器..?

clojure - 长期运行的递归 Clojure 函数的进度更新

clojure - 开发 "model"用于 clojurescript/clojure 应用程序

clojure - 如何在嵌套 HashMap 中合并?

Clojure 返回 seq 中以 key 作为第一个元素的所有对的列表

clojure - 护栏驱动开发的范围 - 测试和类型?

java - 当其他应用播放音乐时,JLayer 中的音乐停止

clojure - 在 clojure repl 中输入十进制数时出错