Clojure 动态向量/列表创建
我是Clojure的新手,我想动态构建一个向量/列表 我构建了这个函数Clojure 动态向量/列表创建,clojure,Clojure,我是Clojure的新手,我想动态构建一个向量/列表 我构建了这个函数generate map,它返回一个map,比如: {:key 1, :value 1, :other [...]} 在另一个函数get语句中,我有一个doseq调用这个generatemap函数 (defn get-statement [st] (doseq [s st] (generate-map s))) 我想在doseq调用上构建一个映射,将所有这些生成映射返回连接起来,例如: [{:key 1, :va
generate map
,它返回一个map
,比如:
{:key 1, :value 1, :other [...]}
在另一个函数get语句
中,我有一个doseq
调用这个generatemap
函数
(defn get-statement
[st]
(doseq [s st] (generate-map s)))
我想在doseq
调用上构建一个映射,将所有这些生成映射
返回连接起来,例如:
[{:key 1, :value 1, :other [...]}
{:key 2, :value 2, :other [...]}
{:key 3, :value 3, :other [...]}]
我该怎么做?谢谢 如果您想创建一些地图,并将它们放入向量,只需使用
for
,与vec
或(into[…)
:
或mapv
:
(mapv generate-map data) ; Super succinct!
切勿将doseq
用于此类情况doseq
不返回任何内容,因此您必须使用一些atom
或其他效果混乱来实际从循环中获取任何内容
- 当您需要执行副作用时,使用
,而不直接需要任何结果doseq
- 如果循环后需要结果,请使用
、for
、map
(或任何其他函数循环构造)reduce
for
,与vec
或(放入[…])
:
或mapv
:
(mapv generate-map data) ; Super succinct!
切勿将doseq
用于此类情况doseq
不返回任何内容,因此您必须使用一些atom
或其他效果混乱来实际从循环中获取任何内容
- 当您需要执行副作用时,使用
,而不直接需要任何结果doseq
- 如果循环后需要结果,请使用
、for
、map
(或任何其他函数循环构造)reduce
doseq
,因为您需要结果。对使用。2.在
功能中查找<代码>(进入{}…
)。我想发布一个答案,但我在计时:/3。要创建的结果看起来非法;映射需要是键/值对。你是说你想要一个矢量地图吗?谢谢!它起作用了:)Np。检查我刚刚发布的答案。注意,我在你接受答案之前就更新了答案,所以我不确定你是否看到了编辑。有一个比使用for
短得多的版本。显然我累了。不知道为什么我的思维立刻跳到了(进入[](for…)
mapv
几乎肯定是适合这里工作的工具,除非您需要某种过滤。1。不要使用doseq
,因为您需要结果。对使用。2.在
功能中查找<代码>(进入{}…
)。我想发布一个答案,但我在计时:/3。要创建的结果看起来非法;映射需要是键/值对。你是说你想要一个矢量地图吗?谢谢!它起作用了:)Np。检查我刚刚发布的答案。注意,我在你接受答案之前就更新了答案,所以我不确定你是否看到了编辑。有一个比使用for
短得多的版本。显然我累了。不知道为什么我的思维立刻跳到了(进入[](for…)
mapv
几乎肯定是适合这里工作的工具,除非您需要某种过滤。