क्लोजर 1.5 ने clojure.edn
पेश किया, जिसमें एक पढ़ा गया फ़ंक्शन शामिल है जिसके लिए PushbackReader
की आवश्यकता होती है।किसी फ़ाइल में ऑब्जेक्ट्स का अनुक्रम प्राप्त करने के लिए clojure.edn/पढ़ने के लिए कैसे उपयोग करें?
मैं पहले पांच वस्तुओं को पढ़ने के लिए चाहते हैं, तो मैं कर सकते हैं:
(with-open [infile (java.io.PushbackReader. (clojure.java.io/reader "foo.txt"))]
(binding [*in* infile]
(let [edn-seq (repeatedly clojure.edn/read)]
(dorun (take 5 (map println edn-seq))))))
मैं कैसे बजाय वस्तुओं की सभी प्रिंट कर सकते हैं? यह मानते हुए कि उनमें से कुछ नील हो सकते हैं, ऐसा लगता है कि मुझे ईओएफ, या कुछ इसी तरह की जांच करने की आवश्यकता है। मैं line-seq
से प्राप्त होने वाली वस्तुओं के अनुक्रमों के समान होना चाहता हूं।
हाँ, यह दस्तावेज़ में ठीक था। ओह। यह ईओएफ के लिए अपने स्वयं के सेंटीनेल को परिभाषित करने के लिए थोड़े गंदे लगता है, लेकिन हो सकता है कि मैंने अभी तक गड़बड़ नहीं की है कि यह अभी तक सही समाधान क्यों है। – ToBeReplaced
अन्य उत्तर पर @bfontaine द्वारा टिप्पणियां देखें। सामग्री-स्वतंत्रता रखने में मूल्य है, लेकिन आप इसे 'eof' कुंजी के लिए किसी भी मान का उपयोग करके प्राप्त कर सकते हैं जो ईडीएन के रूप में क्रमिक नहीं है। – ToBeReplaced