2016-07-08 5 views
0

У меня есть список карт с двумя ключами: путь и: размеркак перебрать список карт в Clojure и конкатенации, что в строку

listOfMaps ({:path "a " :size "1 "}{{:path "b " :size " 2"}...) 

как перебрать его и сцепить свой путь и размер в строку так, чтобы она находится между

что

str "initial" "a" "1" "b" "2" .... "end" 

т.е. путь и размер заполняется через контур должен быть между строками «начальной» и «конец»

ответ

0

Может быть, это тяжело, но я нашел это забавным

(defn str-values [data] 
    (as-> data d 
     (map vec d) 
     (flatten d) 
     (remove keyword? d) 
     (concat ["initial"] d ["end"]) 
     (apply str d))) 

Выходы

"initiala1b2end" 

является то, что вы хотите?

РЕДАКТИРОВАТЬ Коррекция OlegTheCat

(defn str-values [data] 
    (as-> data d 
     (map (juxt :path :size) d) 
     (flatten d) 
     (remove keyword? d) 
     (concat ["initial"] d ["end"]) 
     (apply str d))) 
+0

'(карта VEC г)' - это неверно. вы не можете полагаться на порядок ключей карты. – OlegTheCat

+1

Вместо этого я бы предположил использовать '(map (juxt: путь: размер) d)'. – OlegTheCat

+0

да, я забыл это ^^ –