2009-07-11 20 views
34

मैं वर्तमान में क्लोजर सीख रहा हूं, लेकिन मैं सोच रहा था कि क्लोजर प्रोग्राम में उपयोगकर्ता इनपुट कैसे प्राप्त करें और स्टोर करें। मैं क्लोजर एपीआई देख रहा था और मुझे रीड-लाइन नामक एक फ़ंक्शन मिला, हालांकि मुझे यकीन नहीं है कि इसका उपयोग करने के लिए सही फ़ंक्शन है ...क्लोजर में उपयोगकर्ता इनपुट कैसे प्राप्त करें?

किसी भी तरह, आप उपयोगकर्ता इनपुट कैसे प्राप्त करते हैं क्लोजर?

+0

BTW इस्तेमाल कर सकते हैं - पढ़ने के लिए लाइन के लिए विशेष रूप से उपयोगी नहीं है - लेकिन (doc समारोह) फ़ंक्शन के लिए उपयोग और दस्तावेज़ीकरण मुद्रित करेगा, उदाहरण के लिए (डॉक्टर रीड-लाइन)। – flatline

उत्तर

44

read-line सही कार्य है ..

(println (read-line)) 

..would मूल रूप से गूंज उपयोगकर्ताओं इनपुट:

:

Clojure 1.0.0- 
user=> (println (read-line)) 
this is my input 
this is my input 

एक में उसका उपयोग करने अगर बयान, तो आप शायद जाने का उपयोग करेंगे

(let [yayinput (read-line)] 
    (if (= yayinput "1234") 
    (println "Correct") 
    (println "Wrong"))) 

आशा है कि आपको शुरू करने के लिए पर्याप्त है, क्योंकि यह मेरे क्लोजर ज्ञान की सीमा के बारे में है !

25

भी याद रखें कि आप जावा के सभी के लिए उपयोग किया ...

ठीक तो शायद मैं कुछ उदाहरण ... मेरी clojure कौशल इसलिए इन उदाहरणों फेरबदल का एक सा आवश्यकता हो सकती है अच्छा नहीं कर रहे हैं प्रस्तुत करना चाहिए।

System.console() रास्ता:

(let [console (. System console) 
    pwd (.readPassword console "tell me your password: ")] 
    (println "your password is " pwd)) 

BufferedReader रास्ता:

(print "give me a line: ") 
(let [reader (java.io.BufferedReader. *in*) 
    ln (.readLine reader)] 
    (println "your line is " ln)) 

मेरे बिंदु एक जावा के ज्ञान का लाभ उठाने कि कर सकते हैं और जावा ही है, में है Clojure। यह इसकी प्रमुख, विज्ञापित शक्तियों में से एक है।

आश्चर्य है कि मेरा स्कोर क्या होगा यदि प्रश्न GUI से उपयोगकर्ता इनपुट के बारे में था!

वैसे, आप उपयोगकर्ता इनपुट प्राप्त करने के लिए एक छोटे से जीयूआई लगाने की JOptionPane इस्तेमाल कर सकते हैं ...

+4

तो System.console() के getPassword()/readLine() को कॉल करने में सक्षम होने के नाते क्या है? गंभीरता से, प्रश्न क्लोजर में उपयोगकर्ता इनपुट प्राप्त करने के बारे में है ... एक JVM भाषा। – Allen

+0

ओह। इसे ऊपर पढ़ा जाना चाहिए पासवर्ड() ऊपर। – Allen

+8

उह, यह वह जगह है जहां क्लोजर * जावा से मिलने के लिए * है। यदि आप इस तरह क्लोजर प्रोग्राम करने जा रहे हैं, तो आप कुछ भी उपयोग नहीं कर सकते हैं। – Allen

1

-पढ़ने के लिए लाइन उपयोगकर्ता इनपुट मिलता है और कुछ चर करने के लिए बाध्य करने के लिए यह जाने का उपयोग किया जाता है।

उदाहरण के लिए: आप उपयोगकर्ता से उपयोगकर्ता आईडी और पासवर्ड पढ़ सकते हैं और यह प्रदर्शित करना चाहते हैं, तो आप कोड का निम्न भाग

(defn print-message [pid pw] 
(println "PID : " pid) 
(println "PW : " pw)) 

(defn inp[] 
(println "Enter your PID and password") 
(let[pid (read-line) pw (read-line)] 
(print-message pid pw))) 
+0

आपको पासवर्ड पढ़ने के लिए 'रीड-लाइन' का उपयोग नहीं करना चाहिए। कंसोल पर पासवर्ड मास्क करने के लिए '(.readPassword (सिस्टम/कंसोल)" पासवर्ड का एक प्रकार का प्रयोग करें: ")। – bfontaine

संबंधित मुद्दे