Tôi mới đến Clojure và tôi bị mắc kẹt về cách 'mở rộng' một tùy chọn của hàm để họ có thể được gửi đến một hàm khác sử dụng tùy chọn args (nhưng muốn những args là từ khóa không phải là một từ khóa của seq).Clojure: Pass 'mở rộng' tùy chọn args để chức năng
Tôi đang phân tích cú pháp xml và nếu tôi cứng giá trị mã như bên dưới chức năng của tôi làm việc, nó đi xml và tìm giá trị của 'tiêu đề':
; 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)
Những gì tôi muốn làm là sử dụng 'nút -truy cập 'để chuyển vào bất kỳ số lượng từ khóa nào, nhưng khi được viết dưới dạng nó xuất hiện dưới dạng chuỗi từ khóa để nó ném một ngoại lệ:
(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)
thanks!