首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Var clojure.core/unquote-将列表元素传递到hash-map时,拼接出现未绑定错误

Var clojure.core/unquote-将列表元素传递到hash-map时,拼接出现未绑定错误
EN

Stack Overflow用户
提问于 2010-08-22 15:40:20
回答 1查看 816关注 0票数 1

我试图从交错列表创建一个map,但遇到了错误。下面是我正在做的事情:

代码语言:javascript
复制
(interleave ['a 'b] [1 2])

给出了列表(A1b2)。

如果我想从一堆元素创建一个hash-map,我可以这样做

代码语言:javascript
复制
(hash-map 'a 1 'b 2)

将两者结合在一起,

代码语言:javascript
复制
(hash-map ~@(interleave ['a 'b] [1 2]))

我得到了这个错误:

代码语言:javascript
复制
java.lang.IllegalStateException: Var clojure.core/unquote-splicing is unbound. (repl-1:2)

如何将列表中的元素传递给hash-map?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-22 16:23:46

您需要使用apply

代码语言:javascript
复制
(apply hash-map (interleave ['a 'b] [1 2]))

apply将一个函数应用于一系列参数;有关详细信息,请在REPL中键入(doc apply)

引号是语法- ~@的两个伴生之一,写成反引号,另一个是~

代码语言:javascript
复制
`(~(+ 1 2) ~@[2 1])
; => (3 2 1)

这三种方法主要用于编写宏;不能在语法引号之外使用~~@

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3540599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档