【发布时间】:2014-07-29 22:41:10
【问题描述】:
有人可以解释一下如何评估以下匿名函数吗?
(defn min-by [f coll]
(when (seq coll)
(reduce (fn [min this]
(if (> (f min) (f this)) this min))
coll)))
(min-by :cost [{:cost 100} {:cost 36} {:cost 9}])
;=> {:cost 9}
我不明白min 和this 的论点从何而来。似乎 coll 可能正在被隐式解构。
我怎样才能更好地理解这个函数在做什么?
【问题讨论】:
-
另外,在这种特殊情况下,您最好使用内置的 clojure.core 函数 min-key 并将其应用于序列。
-
正如你现在所看到的,克里斯,这并不是关于匿名函数的问题;这是一个关于
reduce的问题。 Arthur Ulfeldt 的回答非常好。您可能需要考虑编辑标题,以便将来人们在搜索类似信息时更容易找到您的问题和他的答案(以及任何其他答案)。
标签: clojure