我正在尝试解析返回CSV数据的旧API的结果(没有标题)。 parse-response
函数效果很好,但当我尝试使用verify-response
进行检查时,ArityException Wrong number of args (0) passed to: PersistentHashMap
失败了。如何通过检查关键字段的函数传递哈希映射,如果无效,则创建备用错误哈希映射?
(def response-fields
[:response_code :response_text
:address :city :state :zip_code :country
:phone :fax :email
:first_name :last_name :company
:special_instructions :SpecialCode
])
(defn parse-response
"One line CSV file"
[response]
(zipmap response-fields
(first (csv/read-csv (:body response)))))
(defn verify-response
"Get response if code is valid"
[response-map]
(cond (some? (:response_code response-map)) (response-map)
:else
{:response_code "911"
:response_text "API Failure"}))
答案 0 :(得分:2)
response-map
正文中verify-response
周围有一组错误的括号。 (response-map)
将地图称为没有参数的函数。 Clojure中的地图实现了IFn
接口;可以使用1或2个参数调用它们来对自己进行查找,并使用可选的默认值。
user=> ({:a 1} :a)
1
user=> ({:a 1} :b :foo)
:foo
user=> ({:a 1})
;; ArityException Wrong number of args (0) passed to: PersistentArrayMap