2012-08-14 9 views
8

私はちょうど私のプロジェクトにclojure.core.cache 0.6.1を追加しました。ここでは非常に短い明確な例を示しています:https://github.com/clojure/core.cacheアウトは機能しません。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 

は間違ってここで何が起こっていますか?私は完全にポイントを逃していますか?私は同じ結果を持つ他のキャッシュバックエンドですべて試しました。異なるキー、異なる値、別の名前空間、別名別名で試してみました。テストを実行すると、私には次のように伝えられます。

$ lein test clojure.core.cache.tests 

Testing clojure.core.cache.tests 

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

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

私はただ動作する前に任意のヘルプ?

答えて

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 
+1

感謝。ここでの使用例はhttps://github.com/clojure/core.cacheで、自分で状態を処理する必要があることを示していますか?それはそうではないようです...私はあなたが上記のようにステートフルにすることができることをよく知っていますが、私はサンプルとそれがすでに行っていたテストから印象を受けました。私はソースを見て、再びテストします。 – lsh

+5

私はこれを自分のフロントページの悪い例に入れて、私の期待を歪ませるつもりです。たとえ彼らが国家を処理していたとしても、私は本当にそれを望んでいるのか分からない。 – lsh

+0

ああ、私がこの質問をしたときの私の緑の程度は少し恥ずかしいです;) – lsh

関連する問題