2013-09-30 47 views
1

它最好解釋我在用什麼樣的例子。將這個clojure片段用串連接到concat集合的習慣用法是什麼?

由於集合[「蘋果」,「桔子」,「香蕉」]和連接字符串「」功能應該產生‘蘋果,橘子,香蕉’

這是寫此功能的慣用方法是什麼?

user=> (defn my-concat[x st] 
    (str (first x) (apply str (map #(str st %) (rest x))))) 

user=> (my-concat "abcd" "!") 
"a!b!c!d" 

回答

3

可以使用interpose功能,如果你想有一個序列,或clojure.string/join如果你只是想串結果。

+0

我看着clojure.string/join源碼。它使用StringBuilder。和循環/重複。我想知道爲什麼作者選擇實施?這可能是由於性能原因?連接可寫爲(apply str(interpos st coll))。 – psaradhi

+0

我定時了這兩個函數。 clojure.string/join的速度總是快大約50% – psaradhi

+1

Interpose會進行更多的工作來維護收集和分隔符的延遲交錯。 Join對單個結果字符串進行了優化。 – Jared314

相關問題