2

私は Clojure の初心者で、優れたオープン ソース コードを読んで Clojure を学んでいます。そこで、Ring を選択してコードを読み始めましたが、assoc-query-params 関数でスタックしてしまいました。(これはring.middleware/params.cljにあります)

そして、なぜ「merge-with」が使われるのか理解できませんでした。このコードスニペットを理解するのを手伝ってくれる人はいますか?

(defn- assoc-query-params
  "Parse and assoc parameters from the query string with the request."
  [request encoding]

  ; I think (merge request (some-form)) is enough
  ; but the author used merge-with with merge function.

  (merge-with merge request
    (if-let [query-string (:query-string request)]
      (let [params (parse-params query-string encoding)]
        {:query-params params, :params params})
      {:query-params {}, :params {}})))
4

1 に答える 1