clojure.core.cache只是不能使用自己的例子

lsh*_*lsh 8 caching core clojure leiningen

我刚刚将clojure.core.cache 0.6.1添加到我的项目中,做了一个lein deps,遵循这里非常简短明了的例子:https://github.com/clojure/core.cache它只是扁平化不起作用.

例:

$lein repl
REPL started; server listening on localhost port 20513
user=> (require '[clojure.core.cache :as cache])
nil
user=> (def fifoc (cache/fifo-cache-factory {}))
#'user/fifoc
user=> (cache/has? fifoc :foo)
false
user=> (cache/miss fifoc :foo "bar")
{:foo "bar"}
user=> (cache/has? fifoc :foo)
false
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?我完全忽视了这一点吗?我已经尝试了其他缓存后端所有相同的结果.尝试用不同的键,不同的值,不同的命名空间,不同的别名 - nada.运行测试给我这个:

$ lein test clojure.core.cache.tests

Testing clojure.core.cache.tests

Ran 13 tests containing 273 assertions.
0 failures, 0 errors.
Run Code Online (Sandbox Code Playgroud)

这使得这更加神秘.我查看了测试,虽然他们:导入缓存后端并以java方式实例化它们(miss(BasicCache.{})...),我也尝试过,这对我来说也是以完全相同的方式失败了.

在我实施一个有效的方法之前的任何帮助?

Ank*_*kur 15

cache/miss 返回您需要用于进一步操作的新缓存对象.

例如:

user=> (cache/has? (cache/miss fifoc :foo "bar") :foo)
true
Run Code Online (Sandbox Code Playgroud)

你的例子变成:

user=> (def fifoc (atom (cache/fifo-cache-factory {})))
#'user/fifoc
user=> (swap! fifoc  #(cache/miss % :foo "bar"))
{:foo "bar"}
user=> (cache/has? @fifoc :foo)
true
Run Code Online (Sandbox Code Playgroud)

  • 我打算在首页上把它放在一个不好的例子上,这会扭曲我的期望.即使他们在内部处理国家,我也不确定我是否真的想要那个. (5认同)