String Clojure从for方法返回字符串列表

String Clojure从for方法返回字符串列表,string,data-structures,map,clojure,String,Data Structures,Map,Clojure,我有一个映射,我想用它来处理和添加它的所有值以及作为输出一部分的键 (def map {:a (:b :c :d) :e (:f :g :h)}) 我想执行“for all key”返回“a:contains(:b:c和:d)”,并将字符串添加到一起以获得最终输出:“a:contains(:b:c和:d):e contains(:f:g和:h)” 我最初尝试了doseq,其中我的映射试图将键和值分解为'k'和'v',然后(strk“包含”v) 然后我拿起绳子,把它放进一个文件里 这没有任何作用

我有一个映射,我想用它来处理和添加它的所有值以及作为输出一部分的键

(def map {:a (:b :c :d) :e (:f :g :h)})
我想执行“for all key”返回“a:contains(:b:c和:d)”,并将字符串添加到一起以获得最终输出:“a:contains(:b:c和:d):e contains(:f:g和:h)”

我最初尝试了doseq,其中我的映射试图将键和值分解为'k'和'v',然后(strk“包含”v) 然后我拿起绳子,把它放进一个文件里

这没有任何作用,所以我添加了一个print语句,说明键和值对。它们被打印出来,但没有添加到文件中

我读了起来,似乎我需要使用一个“for”,它可以与doseq交换,但很懒,但基本上返回值

更改为for立即给了我错误数量的参数错误,这很奇怪,因为我有两个destructures和一个返回字符串的方法体。我修改了for循环并以编译结束,但我将对象作为字符串而不是内容获取

这快把我逼疯了

有人能帮我做什么吗


非常感谢,

首先,乔斯特所说的是正确的

我想你想要的是这个

(def my-map {:a '(:b :c :d) :e '(:f :g :h)})

(apply str (map #(str (first %) " contains " (second %) " ") my-map))
":a contains (:b :c :d) :e contains (:f :g :h) "

首先,乔斯特所说的是正确的

我想你想要的是这个

(def my-map {:a '(:b :c :d) :e '(:f :g :h)})

(apply str (map #(str (first %) " contains " (second %) " ") my-map))
":a contains (:b :c :d) :e contains (:f :g :h) "

它可能有助于包含您认为最接近正确的代码。我不太理解该文本,您可能只想发布您的代码,而不想告诉我们。一些备注。
(def map{:a(:b:c:d):e(:f:g:h)})
-覆盖当前命名空间中的
map
,除非您阻止,否则该命名空间通常别名为clojure.core/map。-将
map
定义为
{:a:d:e:h}
,因为您没有引用列表。您通常希望对文本使用向量而不是列表。出于这些原因,类似于
(def my map{:a[:b:cd]:e[:f:g:h]})
更为惯用。而且,我不理解这个问题。它可能有助于包含您认为最接近正确的代码。我不太理解该文本,您可能只想发布您的代码,而不想告诉我们。一些备注。
(def map{:a(:b:c:d):e(:f:g:h)}
-重写当前命名空间中的
map
,除非您阻止,否则该命名空间通常别名为clojure.core/map。-将
map
定义为
{:a:d:e:h}
因为您没有引用列表。您通常希望使用向量而不是列表来表示文字。出于这些原因,类似于
(def my map{:a[:b:cd]:e[:f:g:h]})的内容
更加惯用。而且,我不理解这个问题。