>>>>>>> 24b6b53 ( 【init】)
let 是为了绑定变量用的,这个变量可以是任何的结构,包括函数。
当前有个函数(摘自《clojure in action》),形式是这样的:
(defn average-pets []
(/ (apply + (map :number-pets (vals users))) (count users)))
其中用到的users结构是这样的:
(def users {"www" {:password "one" :no 12}
"zzz" {:password "lala" :no 44}})
看上去这个average-pets比较复杂,主要是计算的时候,取了各种数据。用let的话,就隔离开了同时计算和取值的这种问题。改造后的:
(defn average-pets-2 []
(let [user-data (vals users)
number-pets (map :no user-data)
total (apply + number-pets)
count-user (count users)]
(/ total count-user)))
这样就把取值和计算分开了。