2008-12-04 10 views
6

से जावा कॉलिंग जब मैं Clojure में निम्न कोड (आरईपीएल से) चलाने का प्रयास: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

आपका कोड नवीनतम एसवीएन (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 सितंबर को रिलीज का उपयोग कर रहे हैं? आपको लगभग क्लोजर के एसवीएन संस्करण का उपयोग करना होगा। यह बहुत तेजी से बदल रहा है।

2

मुझे लगता है कि आपका मतलब है "क्लोजर से जावा को कॉल करना"। वे अभी भी fiddling with the syntax हैं।