10

如果我有一系列由定义的记录,(defrecord Person [name age])并且我想获得年龄最大的人的记录,有没有比这更简单的方法

(reduce #(if (> (:age %1) (:age %2)) %1 %2) people)

到目前为止,这是我想出的唯一方法,但似乎这必须是一个足够常见的场景,必须有一些内置的库函数使这更容易和/或更通用。

4

2 回答 2

19

clojure.core/max-key是适合这项工作的工具。

 (apply max-key :age [{:age 12} {:age 20} {:age 30}]) ;; -> {:age 30}
于 2013-05-23T08:27:46.867 回答
1
(last (sort-by :age [{:age 12} {:age 20} {:age 30}]))

排序方式使用比较

于 2013-05-23T23:08:07.237 回答