2012-09-24 67 views
4

我正在尋找一個像一個矢量行爲的緩存。我一直在使用core.cache,但這些都是地圖。我只需要一個簡單的先遣隊驅逐方法。我意識到我可以簡單地使用CacheProtocol協議創建自己的協議,但我想知道這樣的事情是否已經存在,或者是否有理由這是一個壞主意。clojure矢量緩存

+0

Ju我明白這個問題;你想要一個矢量的內容被緩存在每個索引的元素被替換爲新值的時候變得可用嗎? –

+0

雅這就是我正在尋找。然而,我不認爲關於轉移所有元素的開銷會引入。這回答了我的問題的最後部分:「這是一個壞主意嗎?」 =>「是」 –

回答

2

如果您只需要一個像緩存接口的向量,那麼緩存的索引值就可以滿足您的需求。我猜了一下你的具體問題,但它很可能是使用數字作爲鍵緩存將填補許多用例因爲向量在概念上非常相似,數字地圖,值:

user> (def C (cache/fifo-cache-factory {0 1 1 0})) 
user> (get C 0) 
1 

如果這還不夠,那麼你可以看看你的緩存的當前內容的載體形式,像這樣:

user> (vec (map #(get C % nil) (range 11))) 
[1 0 nil nil nil nil nil nil nil nil nil] 

在大多數情況下,它很可能是使用數字作爲指標將會對許多人

做的工作