【发布时间】:2018-02-26 19:27:14
【问题描述】:
我正在尝试更新具有“enjoy-clojure”的每一行?将真正的“健全性评级”返回为 -2(即 johnny 的健全性评级将更新为 -2)
(def student-database
{ 0 {:enjoy-clojure? false, :name "jimmy",:sanity-rating 9}
1 { :enjoy-clojure? true, :name "johnny",:sanity-rating 2}
2 { :enjoy-clojure? true, :name "jilly",:sanity-rating 5}
3 { :enjoy-clojure? true, :name "janey",:sanity-rating 8}
4 {:enjoy-clojure? false, :name "jelly",:sanity-rating 10}})
我是 Clojure 的新手,曾尝试研究 update 和 assoc,但似乎真的找不到更新多个元素的方法((assoc student-database [0 :sanity-rating] -2) 只返回更新一个元素)。过滤学生数据库以取出返回真实的学生我有
(defn unhinged?
[record]
(:enjoy-clojure? record))
(defn minus-two-students
[student-database]
(filter #(unhinged? %)
(map student-database [0 1 2 3 4])))
然后返回
({:enjoy-clojure? true, :name "johnny", :sanity-rating 2} {:enjoy-clojure?
true, :name "jilly", :sanity-rating 5} {:enjoy-clojure? true, :name
"janey", :sanity-rating 8})
效果很好,但我还需要它来将他们的所有理智评级更新为 -2。任何帮助/提示将不胜感激。
【问题讨论】:
标签: clojure clojurescript