我试图从交错列表创建一个map,但遇到了错误。下面是我正在做的事情:
(interleave ['a 'b] [1 2])给出了列表(A1b2)。
如果我想从一堆元素创建一个hash-map,我可以这样做
(hash-map 'a 1 'b 2)将两者结合在一起,
(hash-map ~@(interleave ['a 'b] [1 2]))我得到了这个错误:
java.lang.IllegalStateException: Var clojure.core/unquote-splicing is unbound. (repl-1:2)如何将列表中的元素传递给hash-map?
发布于 2010-08-22 16:23:46
您需要使用apply
(apply hash-map (interleave ['a 'b] [1 2]))apply将一个函数应用于一系列参数;有关详细信息,请在REPL中键入(doc apply)。
引号是语法- ~@的两个伴生之一,写成反引号,另一个是~
`(~(+ 1 2) ~@[2 1])
; => (3 2 1)这三种方法主要用于编写宏;不能在语法引号之外使用~和~@。
https://stackoverflow.com/questions/3540599
复制相似问题