2016-01-11 2 views

ответ

2

Ваш параметр var2 фактически содержит Rest Arguments (речь идет после & характера). Поэтому он фактически содержит все аргументы, которые появляются после var1. Вы можете исправить код, удалив &, но тогда вы можете указать только один var2 аргумент:

(defn test1 [var1 var2] 
    (print (json/write-str (merge {:key1 var1} var2)))) 

Если вы хотите, чтобы быть в состоянии пройти несколько карт, как var2, вы сначала должны объединить их в один карта:

(defn test1 [var1 & var2] 
    (print (json/write-str (merge {:key1 var1} 
           (apply merge var2))))) 
+1

Здесь нет необходимости в двух вызовах 'merge',' (apply merger {: key1 var1} var2) 'должно выполнять задание. –

+1

'' можно использовать вместо 'merge', fwiw. – Mars

Смежные вопросы