2016-05-04 48 views
0

字符串的載體列表如果我有:串聯Clojure中

(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"]) 

我怎樣才能得到:

"aa=AA&bb=BB&cc=CC" 

是有連擊功能可用?

回答

3

concat在一個水平將 「扁平化」 的嵌套序列:

(apply concat '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"])) 
;; => ("aa=AA" "&" "bb=BB" "&" "cc=CC") 

然後你可以使用str連接序列中的字符串:

(apply str '("aa=AA" "&" "bb=BB" "&" "cc=CC")) 
;; => "aa=AA&bb=BB&cc=CC" 

組合成一個功能:

(defn concat-str [s] 
    (->> s 
    (apply concat) 
    (apply str))) 

(concat-str '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"])) 
;; => "aa=AA&bb=BB&cc=CC" 
1

如下您可以實現它:

(def concatenate (comp (partial apply str) flatten)) 

然後:

user> (concatenate '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"])) 
aa=AA&bb=BB&cc=CC 
1

只是爲了好玩: 你也可以使用map函數的行爲此

user> (defn conc [items] (first (apply map str items))) 
#'user/conc 

user> (conc '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"])) 
"aa=AA&bb=BB&cc=CC"