2
lein new caching

次に、project.clj ファイルを次のように編集します。

(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のサンプル ドキュメントに触発されて、core.clj を次のように編集します。

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

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

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

2 に答える 2

4

lru-cache-factoryバージョン 0.5.0 の core.cache の引数リストが異なっていたようです。

これは、コミットa052bb568a1ca84b73ffda0bd252f01c5fa310aaからの差分のコピーです。

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

チュートリアルに従うために、core.cache の 0.6.0-SNAPSHOT を使用してみてください。

于 2012-05-18T17:14:58.270 に答える
1

0.5.0 に依存し続けたい場合は、コードを次のように変更できます。

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

(cache/lru-cache-factory 2 {})
于 2012-05-22T16:04:21.657 に答える