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 に答える