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

欢迎!请查看 关于 页面以获取更多关于如何使用本站的信息。

0
core.memoize

为了与原子的行为相类比,memo-swap! 当前行为应被称为memo-reset!,因为它会覆盖整个memo映射。同样,应该有一个执行原子交换操作的函数called memo-swap!,例如,可以在缓存中添加单个值。

2 个回答

0
_评论由:seancorfield_发布

这是一个好点子!可以通过检查{{(map? base)}}来保持向后兼容性——或许给出一个弃用警告?——但用户必须非常小心,他们会操作缓存,并且core.memoize会将原始值包装在{{IDeref}}实例中,所以一个简单的

(memo-swap! f assoc [42] 99)
 
将不会工作——它需要是

(memo-swap! f assoc [42] (delay 99))

这将使得这是API中唯一真正暴露这个特性的地方。
0
参考: https://clojure.atlassian.net/browse/CMEMOIZE-9 (报告人:markengelberg)
...