Kev*_*ker 2 clojure clojurescript
试图写入一个函数,它接受一个url,api-key和的查询参数的可选地图.
如果没有查询参数,此代码有效:
(defn get-api
[url api-key & query]
(let [api-map {:apikey api-key}]
(let [params (if query
(merge query api-map)
api-map)]
(.log js/console (pr-str params))
(GET url {:params params}))))
(get-api "some/url" "some-key") ;works just fine
(get-api "some/url" "some-key" {:id 123}) ;ends up producing ({:apikey "some-key"} {:id 123})
Run Code Online (Sandbox Code Playgroud)
生成具有我需要的值的单个地图我错过了什么?
解构[x & y]保证y将是第一个之后所有args的序列.如果您只想拥有一个可选参数,请使用多个arities.此外,你if不需要 - nil(或空地图,我在下面使用)将合并得很好.
(defn get-api
([url api-key] (get-api url api-key {}))
([url api-key query]
(let [params (merge query {:api-key api-key})]
...)))
Run Code Online (Sandbox Code Playgroud)