【发布时间】:2021-03-31 19:06:37
【问题描述】:
(test [1 2 3]) 返回的是 [],而不是 [1 2 3],为什么?
(defn test [some-array]
(let [x []]
(doseq [i some-array]
(conj x i))
x))
(test [1 2 3])
编辑:下面的评论表明我正在尝试使用函数式语言的命令式方法,这可能是正确的。我要做的是使用初始值序列(在本例中为向量内部)作为起始数据来构建向量向量。我想我可以尝试转换向量中的每个值并返回它,但这在概念上(从命令式思维方式)似乎比获取一个起始向量并使用它来构建一个新向量并返回它更难。
例如,假设我有一个接受1 并返回"one" 的函数,并且我想让一个函数接受[1 2 3] 并返回[[1 "one"][2 "two"][3 "three"]]。
【问题讨论】:
-
我刚刚意识到我混淆了数组和向量的概念......不确定这是问题的一部分。
-
另外,尝试
for而不是doseq得到相同的结果......不过,我很好奇这两者之间的区别。 -
很难猜出(至少对我而言),你究竟在追求什么。能否请您具体说明一下,您心中的转变是什么?你想
mapsome-var的每个项目还是你想缩小/增加项目等?
标签: clojure clojurescript