请分享您对 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 和自己管理原子等相比,要方便得多。我需要提炼这一经验,并确保文档反映了这一点。

Sean,

很高兴阅读你所写的内容,并在可能的情况下提供任何帮助。
我在README文件(并在repo中的几个/docs页面上)添加了一些说明,旨在阐明两种使用方式:[链接](https://github.com/clojure/core.cache/blob/master/README.md)

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