आप एक रूबी प्रोग्राम लिख रहे हैं और आप उपयोगकर्ता से एक प्रश्न पूछना चाहते हैं…
आप यह कैसे कर सकते हैं?
ठीक है, आप रूबी का उपयोग कर सकते हैं gets
उपयोगकर्ता इनपुट पढ़ने की विधि।
आप कॉल कर सकते हैं gets
।
फिर आपका प्रोग्राम आपके कीबोर्ड से कुछ टाइप करने और एंटर कुंजी दबाने की प्रतीक्षा करना शुरू कर देता है।
परिणाम?
आपको एक स्ट्रिंग वापस मिलती है।
इस स्ट्रिंग में वह सामग्री है जो आपने (या उपयोगकर्ता) टाइप की है, इसलिए यदि आप इस स्ट्रिंग को एक चर के लिए निर्दिष्ट करते हैं तो आप इसका उपयोग करने में सक्षम होंगे।
एक सामान्य उदाहरण अभिवादन कार्यक्रम है।
ऐसा दिखता है :
name = gets.chomp puts "Hello #{name}, nice to meet you!"<ब्लॉकक्वॉट>
#{name}
चीज़ को स्ट्रिंग इंटरपोलेशन कहा जाता है
इसे आज़माएं और खुद देखें कि यह कैसे काम करता है।
- सबसे पहले, इस कोड को "ग्रीटिंग.आरबी" फ़ाइल में सहेजें
- फिर, इसे "रूबी ग्रीटिंग.आरबी" (टर्मिनल प्रोग्राम से) के साथ प्रयोग करें
अपना नाम दर्ज करें और आपका कार्यक्रम आपका स्वागत करेगा!
बहुत बढ़िया।
अब :
यह क्या है chomp
व्यापार के बारे में?
यह एक रूबी विधि है जो gets
के परिणामों को बदल देती है बहुत विशिष्ट तरीके से।
इसे हटाने का प्रयास करें।
डॉट सहित (.
) इससे पहले, तो यह name = gets
. हो जाता है , के बजाय name = gets.chomp
।
यदि आप अपना कोड सहेजते हैं और उसे फिर से चलाते हैं…
आप देखेंगे कि पूरा अभिवादन एक पंक्ति में होने के बजाय अब आपका अभिवादन दो पंक्तियों में टूट गया है।
इसमें क्या हो रहा है?
आइए पता लगाने के लिए विवरण में खुदाई करें!
नई पंक्तियों और विशेष वर्णों को समझना
रूबी आपके द्वारा प्रोग्राम में टाइप की जाने वाली हर चीज को पढ़ती है जबकि get
विधि सक्रिय है।
हमारे अभिवादन कार्यक्रम . के लिए , इसमें आपका नाम शामिल है।
और एक विशेष "नई पंक्ति" वर्ण जो अभिवादन संदेश को दो पंक्तियों में विभाजित करता है!
नए पंक्ति वर्ण से मिलें :
\n
इस प्रकार के विशेष वर्ण सामान्य रूप से अदृश्य होते हैं और केवल नई पंक्तियों, रिक्त स्थान, रंगों आदि के रूप में दिखाई देते हैं।
यदि आप उन्हें देखना चाहते हैं तो आपको $10,000 की कीमत वाली एक जादुई टॉर्च की आवश्यकता होगी।
मजाक कर रहे हो!
आपको बस p
. की आवश्यकता है विधि या inspect
विधि।
उदाहरण उपयोग :
p name # "Jesus\n"
यह रहा!
हमारा "नई लाइन" वर्ण (\n
)।
यह हमें हमारे मूल प्रश्न पर वापस लाता है…
chomp
क्या है सब के बारे में?
chomp
. का उद्देश्य स्ट्रिंग्स के अंत में न्यूलाइन कैरेक्टर को हटाना है।
जैसा कि आपने देखा, यह बहुत मददगार है!
एक और उदाहरण
यह न्यूलाइन कैरेक्टर, या कुछ अन्य विशेष कैरेक्टर होने से, जब आप इसे प्रिंट करते हैं तो स्ट्रिंग कैसी दिखती है, उससे अधिक चीजों को प्रभावित करती है।
यह आपके if कथनों पर भी प्रभाव डाल सकता है!
उदाहरण :
name = gets if name == "David" puts "Hello David, we were expecting you!" end
इस कोड में, यदि आप chomp
. का उपयोग नहीं करते हैं gets
. के साथ , न्यूलाइन कैरेक्टर (\n
. के कारण दोनों तार एक जैसे नहीं होंगे ), इसलिए यह false
. का मूल्यांकन करता है ।
बीटीडब्ल्यू…
यह उन स्ट्रिंग्स पर भी लागू होता है जो आपको gets
. से बाहर मिलती हैं , जैसे डेटा आपको डेटाबेस, फ़ाइल या किसी अन्य स्रोत को पढ़ने से मिलता है।
इन खास किरदारों पर नज़र रखें!
चॉम्प बनाम चॉप बनाम स्ट्रिप
उपयोगकर्ता इनपुट को साफ करने के लिए अन्य दो तरीके जो आपको उपयोगी लग सकते हैं, वे हैं chop
&strip
।
strip
. के साथ आप सफेद स्थान हटा सकते हैं।
उदाहरण :
" John Smith ".strip
chop
के साथ आप हमेशा अंतिम वर्ण हटा देंगे।
पहला वर्ण हटाना
एक और चीज जिसकी आपको आवश्यकता हो सकती है, वह है शुरुआत से ही पात्रों को हटाना।
आप इसे इस तरह कर सकते हैं :
str = "Mr. John" str[0..3] = "" str # "John"
यह पहले चार वर्णों को हटा देता है।
टू गेट्स मेथड्स? प्लॉट मोटा होता है!
एक विशेष मामला है…
जहां आपको $stdin.gets
. का उपयोग करना होगा इसके बजाय सिर्फ gets
।
अगर आपको इस तरह की कोई त्रुटि मिलती है :
`gets': No such file or directory @ rb_sysopen. नहीं है
क्यों?
क्योंकि gets
. के दो संस्करण हैं विधि।
- डिफ़ॉल्ट संस्करण फ़ाइल नाम पढ़ने का प्रयास करता है
- वैकल्पिक संस्करण (
$stdin.gets
) हमेशा उपयोगकर्ता इनपुट से पढ़ता है
अब आप जानते हैं, यदि आपको gets
. का उपयोग करते समय ऐसी कोई त्रुटि दिखाई देती है , इसे $stdin.gets
. में बदलने का प्रयास करें ।
सारांश
आपने प्राप्त और चॉम्प विधियों के बारे में सीखा है, वे क्या करते हैं, वे कैसे काम करते हैं, और वे क्यों उपयोगी हैं!
इस रूबी ट्यूटोरियल के साथ सीखते रहें।
पढ़ने के लिए धन्यवाद!