आप clojure कोर से केवल slurp का इस्तेमाल किया है, जिसका अर्थ है कि हर दूसरे मुख्य कार्य अब, आप के लिए उपलब्ध नहीं :) अपने ns
:use
के बजाय :require
उपयोग करने के लिए परिवर्तित करने का प्रयास है के रूप में इस अधिक मुहावरेदार है।
ध्यान देने योग्य एक बात यह है कि आदेश क्लोजर में महत्वपूर्ण है, इसलिए यदि आप अपनी फ़ाइल के शीर्ष पर कोई फ़ंक्शन घोषित नहीं करते हैं, जैसे कि सी और कुछ अन्य भाषाओं में, पहले के फ़ंक्शन संदर्भ नहीं दे पाएंगे उनको। यही कारण है कि आपकी त्रुटि पहले हो रही थी और इसलिए मैं नीचे अपने -main
फ़ंक्शन को परिभाषित करना चाहता हूं। यह शैली का मामला है।
एक और बात यह है कि आपका -main
फ़ंक्शन अभी परिवर्तनीय तर्क ले रहा है और उनका उपयोग नहीं कर रहा है। क्लोजर में यह उपयोग किए जाने वाले पैरामीटर को संदर्भित करने के लिए _
का उपयोग करने के लिए मूर्खतापूर्ण है। जब आप अनावश्यक तर्कों में गुजरते हैं, तो त्रुटि संदेश से बचने के लिए आप & _
का उपयोग कर सकते हैं, लेकिन मेरे पास शुरुआत से ही -इन फ़ंक्शन पैरामीटर रहित होगा। ऐसा इसलिए है क्योंकि जब आप प्रोग्राम चलाते हैं तो मुख्य को कुछ भी प्रदान करने की आवश्यकता नहीं होती है, और त्रुटियां डीबगिंग को आसान बनाती हैं। यह जानना अच्छा होता है कि क्या उपयोग किया जा रहा है और कहां है। sample.csv
फ़ाइल पहले से ही प्रदान की गई है और इसमें read-file
है, इसलिए प्रोग्राम को चलाना चाहिए यदि आपका read-file
फ़ंक्शन सही है और sample.csv
फ़ाइल उचित स्थान पर है।
अपने -main
फ़ंक्शन के संबंध में, यह देखने के लिए अच्छा परीक्षण करना अच्छा होगा कि यह चलाने पर ठीक से निष्पादित हो या नहीं, इसलिए मैंने इसे आपके कंसोल पर सीएसवी फ़ाइल की सामग्री को मुद्रित करने के लिए बदल दिया। फ़ाइल से प्रिंट करने का यह तरीका अपने अधिकार में अध्ययन करने योग्य और योग्य है।
अंत में, सुनिश्चित करें कि आप clojure-csv.core
को अपने project.clj
फ़ाइल में शामिल करें।
core.clj:
(ns fileops.core
(:require
[clojure-csv.core :refer [parse-csv]]))
(defn read-file
"open and read the csv file"
[fname]
(with-open [file (clojure.java.io/reader fname)]
(parse-csv (slurp fname))))
(defn -main []
(println (clojure.string/join "\n" (read-file "resources/test.csv"))))
project.clj: जैसा कि ऊपर दिखाया, मुख्य:
...
:dependencies [[org.clojure/clojure "1.5.1"]
[clojure-csv/clojure-csv "2.0.1"]
...]
:main fileops.core
आप के रूप fileops.core घोषित करने के लिए की जरूरत है। यह Leiningen को बताता है कि जब आप lein run
दर्ज करते हैं तो निष्पादित करने के लिए क्या कार्य करता है। बहुत महत्वपूर्ण और मुश्किल सामान।
तो अब सुनिश्चित करें कि आप अपनी परियोजना निर्देशिका की जड़ में और टर्मिनल पर कर रहे हैं, तो निम्न चलाएँ:
lein clean
lein deps
lein run
गुड लक!
अतिरिक्त पठन:
8th light blog on name-spaces
flying machine studios explanation of lein run
-पढ़ने के लिए फ़ाइल अपने स्रोत में मुख्य से पहले किया जाना चाहिए। –
@DiegoBasch आप एक जीवन बचतकर्ता हैं। मैं क्लोजर के लिए नया हूं और मैंने यह पता लगाने की कोशिश में बहुत अधिक समय बिताया कि मुझे गलत संदर्भ में मेरे फ़ंक्शन के बारे में त्रुटि क्यों मिली। यह था ... यह पूरे समय था। महान पद। –