Clojure - 从单独的列表中加入字符串

时间:2017-05-30 14:52:25

标签: clojure

我有3个列表("Hello" "Hi" "Hey") ("How's it" "What's" "Hey") ("going?" "up?" "Hey!")

如何加入列表以获取Hello How's it going? Hi What's up? Hey Hey Hey!

我知道我可以使用clojure.string/join " "将字符串连接到一个列表中,但我想加入每个列表中的第一个元素,每个列表中的第二个元素,每个列表中的第三个元素...... < / p>

非常感谢任何帮助。感谢

3 个答案:

答案 0 :(得分:5)

您可以使用map。如果传入多个集合,它将从每个集合中获取一个元素并将其传递给fn:

(def a ["Hello" "Hi" "Hey"])
(def b ["How's it" "What's" "Hey"])
(def c ["going?" "up?" "Hey!"])

(map (fn [& args] (clojure.string/join " " args)) a b c)

这将导致:

("Hello How's it going?" "Hi What's up?" "Hey Hey Hey!")

但我相信更多的想法可以想到一个更优雅的解决方案: - )。

答案 1 :(得分:4)

您可以使用map

(map (fn [& args] (join " " args)) '("Hello" "Hi" "Hey") '("How's it" "What's" "Hey") '("going?" "up?" "Hey!"))

答案 2 :(得分:0)

只需将您的列表连接到整个列表中即可加入它:

(def data '[("Hello" "Hi" "Hey") 
            ("How's it" "What's" "Hey") 
            ("going?" "up?" "Hey!")])

(clojure.string/join " " (apply concat data))

Hello Hi Hey How's it What's Hey going? up? Hey!