2008-12-04 3 views
6

Когда я пытаюсь запустить следующий код (от РЕПЛ) в Clojure:Вызов Java из Clojure

(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) 

Что я здесь делаю неправильно?

ответ

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] 

Вы используете выпуск от 16 сентября? Вы почти должны использовать версию SVN для Clojure. Это слишком быстро меняется.

Смежные вопросы