【问题标题】:Clojure priority-map with finite size具有有限大小的 Clojure 优先级映射
【发布时间】:2014-03-29 13:56:47
【问题描述】:

我想扩展 Clojure priority-map 以支持容量有限的优先级映射。一旦priority-map初始化了一个大小,如果当前计数等于映射的容量,它将在关联期间根据优先级丢弃额外的项目。

我正在考虑使用 deftype 来实现它并更改 assoc 的实现。但我不确定这是否是最好的方法,或者是否可以只覆盖 assoc 和 into 操作。

非常感谢任何反馈。

【问题讨论】:

    标签: clojure


    【解决方案1】:

    您可以使用 Zach Tellman 的 potemkin 库,特别是它的 def-map-type 宏,来定义一个自定义地图类型,其中包含一个优先级地图。您只需为getassocdissockeys 提供显式实现——所有其他Clojure 和Java 方法都会自动为您实现。鉴于您的用例,getdissockeys 几乎可以委托给内部优先级映射,而assoc 将实现删除逻辑。

    您可能还想看看core.cache,它使用优先级映射来实现其缓存类型。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      相关资源
      最近更新 更多