(map (fn [x]
(let [username (or (:f_username x) nil)
sites_names (SITES-NAMES username)
x (assoc x :sites sites_names)]
x)) my-rows)
在上面的代码中:SITES-NAMES给了我一个arity异常。然而 如果我称它(SITES-NAMES" theuser")它可以工作。为什么会这样 如果用户名评估为"用户"。
的示例答案 0 :(得分:0)
我不知道为什么会这样,但这里有一些提示:
1)使你的匿名函数成为顶级函数,如下:
(defn add-site [site-names {:keys [f-username] :as x}]
(assoc x :sites (get site-names f-username)))
请注意我如何命名vars,有关命名和其他整洁内容的更多信息,请参阅https://github.com/bbatsov/clojure-style-guide。
2)现在,您可以使用
将来电更改为map
(map (partial add-site site-names) my-rows)
这使您可以在REPL中使用add-site
函数,如下所示:
user> (add-site {"hector" "www.hector.com"} {:f-username "hector"})
;; => {:f-username "hector", :sites "www.hector.com"}
您可能也想阅读此内容: https://stuartsierra.com/2015/08/10/clojure-donts-redundant-map