8

プロジェクトにclojure.core.cache0.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

ここで何が問題になっていますか?私は完全に要点を逃していますか?他のキャッシュバックエンドで試してみましたが、すべて同じ結果になりました。異なるキー、異なる値、異なる名前空間、異なるエイリアスで試してみました-nada。テストを実行すると、次のようになります。

$ lein test clojure.core.cache.tests

Testing clojure.core.cache.tests

Ran 13 tests containing 273 assertions.
0 failures, 0 errors.

これはさらに不思議なことになります。私はテストを見て、キャッシュバックエンドをインポートしてJavaの方法(miss(BasicCache。{})...)をインスタンス化しましたが、これもまったく同じように失敗しました。

うまくいくものを実装する前に何か助けはありますか?

4

1 に答える 1

15

cache/miss今後の操作に使用する必要がある新しいキャッシュ オブジェクトを返します。

元:

user=> (cache/has? (cache/miss fifoc :foo "bar") :foo)
true

あなたの例は次のようになります。

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
于 2012-08-14T04:35:32.943 に答える