如何在clojure中做max-by?

lob*_*ism 10 clojure

如果我已经定义了一系列记录(defrecord Person [name age])并且我想获得具有最大年龄的人的记录,那么有更简单的方法吗?

(reduce #(if (> (:age %1) (:age %2)) %1 %2) people)
Run Code Online (Sandbox Code Playgroud)

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

vem*_*emv 16

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

 (apply max-key :age [{:age 12} {:age 20} {:age 30}]) ;; -> {:age 30}
Run Code Online (Sandbox Code Playgroud)