Я новичок в Clojure, и я зациклился на том, как «развернуть» необязательные аргументы функции, чтобы их можно было отправить другой функции, которая использует необязательные аргументы (но хочет, чтобы те args как ключевые слова, а не ключевые слова).Clojure: передать расширенные дополнительные аргументы
Я разбора XML и если я жестко закодировать значения, как показано ниже моя функция работает, он ходит по XML и находит значение «название»:
; zd was required like this
[clojure.data.zip.xml :as zd]
; ...
(defn get-node-value [parsed-xml & node-path]
(zd/xml-> (zip/xml-zip parsed-xml) :item :title zd/text))
(get-node-value parsed-xml)
То, что я хочу сделать, это использовать «узел -path», чтобы передать любое количество ключевых слов, но когда написано ниже он приходит в качестве последовательности ключевых слов, поэтому он бросает исключение:
(defn get-node-value [parsed-xml & node-path]
(zd/xml-> (zip/xml-zip parsed-xml) node-path zd/text))
(get-node-value parsed-xml :item :title)
; ClassCastException clojure.lang.ArraySeq cannot be cast to clojure.lang.IFn clojure.data.zip/fixup-apply (zip.clj:73)
спасибо!