2012-05-18 36 views
2
lein new caching 

然後我進入並編輯我的project.clj文件。我在做什麼core.cache錯誤?

(defproject caching "1.0.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :dependencies [[org.clojure/clojure "1.3.0"] 
       [org.clojure/core.cache "0.5.0"]] 
    :plugins [[lein-swank "1.4.3"]]) 

我執行:

lein repl 

依賴拉,一切都很好。

我然後在https://github.com/clojure/core.cache/wiki/LRU

(ns caching.core 
    (:require [clojure.core.cache :as cache])) 

(cache/lru-cache-factory {} :limit 2) 

與下面由例子啓發文檔編輯core.clj和編譯core.clj時得到以下錯誤。所以......我做錯了什麼?有沒有人得到這個工作正確?

Wrong number of args (3) passed to: cache$lru-cache-factory 
    [Thrown class clojure.lang.ArityException] 

Restarts: 
0: [QUIT] Quit to the SLIME top level 

Backtrace: 
    0:  AFn.java:437 clojure.lang.AFn.throwArity 
    1:   AFn.java:47 clojure.lang.AFn.invoke 
    2: NO_SOURCE_FILE:1 caching.core/eval2247 
    3: Compiler.java:6465 clojure.lang.Compiler.eval 
    4: Compiler.java:6431 clojure.lang.Compiler.eval 
    5:  core.clj:2795 clojure.core/eval 
    6:  core.clj:532 swank.core/eval782[fn] 
    7: MultiFn.java:163 clojure.lang.MultiFn.invoke 
    8:  basic.clj:54 swank.commands.basic/eval-region 
    9:  basic.clj:44 swank.commands.basic/eval-region 
10:  basic.clj:73 swank.commands.basic/eval968[fn] 
11:  Var.java:401 clojure.lang.Var.invoke 
12: (Unknown Source) caching.core/eval2245 
13: Compiler.java:6465 clojure.lang.Compiler.eval 
14: Compiler.java:6431 clojure.lang.Compiler.eval 
15:  core.clj:2795 clojure.core/eval 
16:  core.clj:100 swank.core/eval-in-emacs-package 
17:  core.clj:256 swank.core/eval-for-emacs 
18:  Var.java:409 clojure.lang.Var.invoke 
19:  AFn.java:167 clojure.lang.AFn.applyToHelper 
20:  Var.java:518 clojure.lang.Var.applyTo 
21:  core.clj:600 clojure.core/apply 
22:  core.clj:107 swank.core/eval-from-control 
23:  core.clj:330 swank.core/spawn-worker-thread[fn] 
24:  AFn.java:159 clojure.lang.AFn.applyToHelper 
25:  AFn.java:151 clojure.lang.AFn.applyTo 
26:  core.clj:600 clojure.core/apply 
27:  core.clj:326 swank.core/spawn-worker-thread[fn] 
28:  RestFn.java:397 clojure.lang.RestFn.invoke 
29:   AFn.java:24 clojure.lang.AFn.run 
30:  Thread.java:662 java.lang.Thread.run 

回答

4

看起來lru-cache-factory對core.cache的0.5.0版本有不同的參數列表。

這裏距離差異的副本提交a052bb568a1ca84b73ffda0bd252f01c5fa310aa

- [limit base] 
+ [base & {limit :limit :or {limit 32}}] 

嘗試使用core.cache的0.6.0-SNAPSHOT以按照教程。

1

如果你想繼續依賴於0.5.0,你可以改變你的代碼看起來像這樣:

(ns caching.core 
    (:require [clojure.core.cache :as cache])) 

(cache/lru-cache-factory 2 {}) 
+0

差不多就是我所做的。我很簡單。 –