1

我有一张地图,我想用它来处理和添加它的所有值以及作为输出的一部分的键。

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

我想做'对于所有键返回“a:包含(:b:c和:d)”'并将字符串添加在一起以获得最终输出:“a:包含(:b:c和:d):e包含 (:f :g 和 :h)""

我最初尝试了一个doseq,在我的地图中我尝试将键和值解构为'k'和'v'然后(str k“包含”v)然后我把字符串吐到一个文件中。

这什么也没做,所以我添加了一个打印语句,说明键和值对。它们被打印出来但没有添加到文件中。

我读了起来,似乎我需要使用一个“for”,它可以与 doseq 互换,但很懒,但很重要地返回值。

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

这让我发疯。

任何人都可以帮助我需要做的事情吗?

非常感谢,

4

1 回答 1

1

首先,Joost 所说的是正确的。

我想你想要的是这个?

(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) "
于 2012-11-16T18:35:48.927 回答