6

Clojure で (REPL から) 次のコードを実行しようとすると:

(dotimes [i 5]
  (.start
   (Thread.
    (fn []
      (Thread/sleep (rand 1000))
      (println (format "Finished %d on %s" i (Thread/currentThread)))))))

次のエラーが表示されます。

java.lang.Exception: Unable to resolve symbol: i in this context
clojure.lang.Compiler$CompilerException: NO_SOURCE_FILE:6: Unable to resolve symbol: i in this context
        at clojure.lang.Compiler.analyze(Compiler.java:3713)

ここで何が間違っていますか?

4

2 に答える 2

5

あなたのコードは、最新のSVN(1144)を使用して私のために機能します。

user> (dotimes [i 5] (.start (Thread. (fn [] (Thread/sleep (rand 1000)) (println (format "Finished %d on %s" i (Thread/currentThread)))))))

Finished 0 on Thread[Thread-16,5,main]
Finished 4 on Thread[Thread-20,5,main]
Finished 3 on Thread[Thread-19,5,main]
Finished 1 on Thread[Thread-17,5,main]
Finished 2 on Thread[Thread-18,5,main]

9月16日のリリースを使用していますか?ほとんどの場合、SVNバージョンのClojureを使用する必要があります。変化が速すぎます。

于 2008-12-04T23:35:31.253 に答える
2

「ClojureからJavaを呼び出す」という意味だと思います。彼らはまだ構文をいじっています

于 2008-12-05T00:03:12.713 に答える