2012-05-18 35 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

差不多就是我所做的。我很简单。 –