कमांड लाइन से क्लोजर स्क्रिप्ट चलाने के लिए यह मूर्खतापूर्ण नहीं है। आरईपीएल एक बेहतर कमांड लाइन है। क्लोजर एक लिस्प है, क्लोजर को आग लगाना आम है और उसी घटना को हमेशा के लिए चल रहा है, और इसे पुनरारंभ करने के बजाय इसके साथ बातचीत करें। आप एक समय में चल रहे इंस्टेंस में फ़ंक्शंस को बदल सकते हैं, उन्हें चला सकते हैं और उन्हें आवश्यकतानुसार दबा सकते हैं। कष्टप्रद और धीमी पारंपरिक संपादन/संकलन/डीबग चक्र से बचने से लिस्पस की एक महान विशेषता है।
आप रन यूनिट परीक्षणों जैसी चीजों को करने के लिए आसानी से कार्य लिख सकते हैं, और जब भी आप उन्हें चलाने के लिए आरईपीएल से उन कार्यों को कॉल करते हैं और अन्यथा अनदेखा करते हैं। क्लोजर में clojure.contrib.test-is
का उपयोग करना आम है, अपने टेस्ट फ़ंक्शंस को अपने नेमस्पेस में जोड़ें, फिर उन्हें चलाने के लिए clojure.contrib.test-is/run-tests
का उपयोग करें।
कमांडलाइन से क्लोजर चलाने के लिए एक और अच्छा कारण यह नहीं है कि जेवीएम का स्टार्टअप समय निषिद्ध हो सकता है।
यदि आप वास्तव में कमांड लाइन से क्लोजर स्क्रिप्ट चलाने के लिए चाहते हैं, तो आप इसे कई तरीकों से कर सकते हैं। कुछ चर्चाओं के लिए the Clojure mailing list देखें।
कमांड लाइन तर्कों की उपस्थिति के लिए परीक्षण करना एक तरीका है। मौजूदा निर्देशिका में इस foo.clj
को देखते हुए:
(ns foo)
(defn hello [x] (println "Hello," x))
(if *command-line-args*
(hello "command line")
(hello "REPL"))
आप निर्भर करता है कि आप Clojure शुरू अलग व्यवहार मिलेगा।
$ java -cp ~/path/to/clojure.jar:. clojure.main foo.clj --
Hello, command line
$ java -cp ~/path/to/clojure.jar:. clojure.main
Clojure 1.1.0-alpha-SNAPSHOT
user=> (use 'foo)
Hello, REPL
nil
user=>
Clojure स्रोत में src/clj/clojure/main.clj
देखें कि आप को देखने के लिए कि यह कैसे काम कर रहा है चाहता हूँ।
एक और तरीका है अपने कोड को .class
फ़ाइलों में संकलित करना और उन्हें जावा कमांड लाइन से आमंत्रित करना है। एक स्रोत फ़ाइल foo.clj
को देखते हुए:
(ns foo
(:gen-class))
(defn hello [x] (println "Hello," x))
(defn -main [] (hello "command line"))
संकलित .class
फ़ाइलों को स्टोर करने के लिए एक निर्देशिका करते हैं; यह ./classes
पर डिफ़ॉल्ट है। आपको यह फ़ोल्डर स्वयं बनाना होगा, क्लोजर इसे नहीं बनाएगा। यह भी सुनिश्चित करें कि $CLASSPATH
को ./classes
और आपके स्रोत कोड के साथ निर्देशिका शामिल करने के लिए सेट करें; मुझे लगता है कि foo.clj
वर्तमान निर्देशिका में है। तो कमांड लाइन से:
$ mkdir classes
$ java -cp ~/path/to/clojure.jar:./classes:. clojure.main
Clojure 1.1.0-alpha-SNAPSHOT
user=> (compile 'foo)
foo
classes
निर्देशिका में आप अब .class
फाइलों का एक समूह होगा।
$ java -cp ~/path/to/clojure.jar:./classes foo
Hello, command line.
वहाँ clojure.org पर Clojure कोड संकलन के बारे में जानकारी का एक बहुत कुछ है: कमांड लाइन (डिफ़ॉल्ट रूप से -main
समारोह चल रहा है) से अपने कोड को लागू करने के लिए।
मुझे नहीं लगता कि * विशेषताएं * इसके लिए अच्छे हैं। * विशेषताएं * उपलब्ध सुविधाओं को दिखाएं, कुछ पर्यावरण स्थिति या कोड चलाने का अनुरोध नहीं। –
क्यों नहीं? * विशेषताएं * सभी प्रकार की सामग्री के लिए उपयोग की जाती है: हार्डवेयर का वर्णन करने के लिए, कुछ मूल libs उपलब्ध हैं, सॉफ़्टवेयर के कुछ तरीके, लिस्प कार्यान्वयन का संस्करण, भाषा का संस्करण, चाहे वह है: उत्पादन- मोड या: विकास-मोड, आदि –