gpt4 book ai didi

clojure - 无法对包含日期时间的 map 进行排序

转载 作者:行者123 更新时间:2023-12-04 02:12:37 25 4
gpt4 key购买 nike

我正在尝试根据日期时间值对 map 进行排序。下面的代码使用了来自 clj-time 的函数 -

(def items {:a {:time (date-time 2013 12)} :b {:time (date-time 2013 11)}})

(sort-by #(-> % items :month) before? items)

IllegalArgumentException No implementation of method: :before? of protocol: #'clj-time.core/DateTimeProtocol found for class: nil clojure.core/-cache-protocol-fn (core_deftype.clj:527)

但是我得到了上述异常。我做错了什么?

最佳答案

你需要这样做:

(sort-by (fn [[k v]] (-> v :time)) before? items)

如果你想要一个排序映射,那么你需要将日期时间映射作为键,并将 :a :b 作为值导致排序映射对键值进行排序:

(->>  (into [] items)
(map (fn [[k v]] [v k]))
(flatten)
(apply sorted-map-by #(before? (%1 :time) (%2 :time))))

关于clojure - 无法对包含日期时间的 map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15586156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com