我想知道如何将两个或更多不同类型的元素组合成一个列表。像:
(defn combine [vector]
(conj '(remove number? vector) 10))
这是一个测试:
(combine [1 2 d g f e ])
这是错误:
CompilerException java.lang.RuntimeException: Unable to resolve symbol: d in this context,
我想知道可以使用“conj,concat,into”这些函数来组合它们。另外,我在列表前添加了引号(d g f e),但是错误说d无法解决。有人帮我弄清楚这个问题吗?非常感谢你!
答案 0 :(得分:3)
引用函数的输入以防止它解析列表中的符号:
(combine '[1 2 d g f e ])
'
是quote
函数的shortcur(读者宏)。否则它会在向量传递给combine
函数之前尝试在向量中转换(在Clojure中称为“评估”)符号。使用'
,它将尝试在当前命名空间名称d
中查找var并获取它的值,以便将其放入向量中。
答案 1 :(得分:1)
报价错误。尝试
(defn combine [vector]
(conj (remove number? vector) 10))
(combine '(1 2 d g f e))
;(10 d g f e)