2017-05-30 38 views
1

我有3所列出("Hello" "Hi" "Hey")("How's it" "What's" "Hey")("going?" "up?" "Hey!")Clojure的 - 從單獨的列表

將字符串連接如何加入列表以獲得Hello How's it going?Hi What's up?Hey Hey Hey!

我知道我可以使用clojure.string/join " "加入串在一個單獨的列表但我想加入每個列表中的第一個元素,每個列表中的第二個元素,每個列表中的第三個元素...

任何幫助將不勝感激。由於

回答

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!") 

但我敢肯定多一點認爲更優雅的解決方案可以被認爲是:-)。

+0

映射函數也可以簡單地寫入那些喜歡:'(map#(clojure.string/join「」%&)a b c)''。 – glts

4

您可以使用map

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

(圖矢量的...)或(地圖列表...),如果你有興趣創建一個集合。 – KobbyPemson

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! 
+0

這沒有給出所需的輸出。目標是加入每個列表的第一個元素,然後加入第二個元素等。 – glts