Clojure迭代2d数组并为每个元素添加引号

时间:2015-08-28 09:17:20

标签: arrays clojure

我在Clojure中努力实现这一目标,我在网上找到的例子并没有给我提供合适的解决方案。

给定数据集:

[[foo bar hello]
 [hello foo bar]
 [bar hello foo]]

但是,此数组可以是任意长度n

我希望能够从函数中返回看起来像这样的东西:

 [["foo" "bar" "hello"]
  ["hello" "foo" "bar"]
  ["bar" "hello" "foo"]]

我一直在研究使用walk,但我不完全确定如何应用这些解决方案。

数据必须保持如上所示,不能返回map并使用它(不是没有重写很多应用程序的地狱)。

1 个答案:

答案 0 :(得分:1)

(println v)
;; [[foo bar hello] [hello foo bar] [bar hello foo]]

(println (vec (map (fn [inner] (vec (map #(str "\"" % "\"") inner))) v)))
;; [["foo" "bar" "hello"] ["hello" "foo" "bar"] ["bar" "hello" "foo"]]

编辑:使用mapv来避免vec来电:

(println (mapv (fn [inner] (mapv #(str "\"" % "\"") inner)) v))
;; [["foo" "bar" "hello"] ["hello" "foo" "bar"] ["bar" "hello" "foo"]]