1

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"}))
4

1 に答える 1

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
于 2015-03-12T18:01:13.310 に答える