2024 年 Clojure 调查问卷 中分享您的想法!

欢迎!请查看 关于 页面了解更多关于此如何运作的信息。

+1
core.cache

https://cljdoc.org/d/org.clojure/core.cache/1.0.225/doc/using-core-cache 上的文档示例中没有提及需要在 core.cachecore.cache.wrapped 之间进行选择。更具体地说,在创建缓存时,示例导入了 core.cache 命名空间。然而,稍后当进行 lookup-or-miss 查找时,假设导入了 core.cache.wrapped。当尝试使用从 core.cache 工厂创建的缓存中的 wrapped/lookup-or-miss 时,会遇到相当模糊的异常。

class clojure.core.cache.LRUCache cannot be cast to class clojure.lang.IAtom

我认为在文档中提供更完整的示例可以减轻这个问题。

1 答案

+1

感谢您的反馈!由于我接管了 core.cache 的维护工作,我必须承认我并没有花很多时间在文档上。鉴于 2023 年 Clojurists Together 资助,我将留出一些时间去彻底改写这个库的文档。

我们在工作中广泛使用 clojure.core.cache.wrapped,因为它比尝试使用 clojure.core.cache 并自己管理原子等更为方便。我需要提炼这些经验,并确保文档反映了这一点。

by
Sean,

很高兴阅读你写的任何内容,并且以任何可能的方式提供帮助。
by
我在README文件中(以及在仓库中的一些/docs页面上)添加了一些注释,试图澄清两种使用方法的区别:https://github.com/clojure/core.cache/blob/master/README.md

特别是,我将clojure.core.cache.wrapped的:as别名从c更改为w,这样更清楚地表明第二个示例块使用的是封装API。
...