【发布时间】:2017-07-18 01:59:06
【问题描述】:
我是 Clojure 的新手,我想动态构建一个向量/列表。
我已经构建了这个函数generate-map,它返回一个map,比如:
{:key 1, :value 1, :other [...]}
在另一个函数get-statement 中,我有一个doseq 调用这个generate-map 函数。
(defn get-statement
[st]
(doseq [s st] (generate-map s)))
我想构建一张地图,通过doseq 调用加入所有这些generate-maps 返回,例如:
[{:key 1, :value 1, :other [...]}
{:key 2, :value 2, :other [...]}
{:key 3, :value 3, :other [...]}]
我该怎么做?谢谢!
【问题讨论】:
-
1.不要使用
doseq,因为您需要结果。使用for。 2.查找into函数。(into {}...)。我会发布答案,但我正在上班:/ -
3.您要创建的结果看起来是非法的;地图需要是键/值对。你的意思是你想要一个地图矢量?
-
谢谢!它工作:)
-
Np。检查我刚刚发布的答案。它详细阐述了这些主题。
-
注意,我在你接受之前更新了答案,所以我不确定你是否看到了编辑。有一个比使用
for短得多的版本。显然我累了。不知道为什么我的思绪立即跳到(into [] (for ...))。mapv几乎绝对是适合这里工作的工具,除非您需要某种过滤。
标签: clojure