आप एक रूबी प्रोग्राम लिख रहे हैं और आप उपयोगकर्ता से एक प्रश्न पूछना चाहते हैं…
आप यह कैसे कर सकते हैं?
खैर, आप उपयोगकर्ता इनपुट को पढ़ने के लिए रूबी gets मेथड का उपयोग कर सकते हैं।
आप gets को कॉल कर सकते हैं।
फिर आपका प्रोग्राम आपके कीबोर्ड से कुछ टाइप करने और एंटर कुंजी दबाने का इंतजार करना शुरू कर देता है।
परिणाम?
आपको एक स्ट्रिंग वापस मिलती है।
इस स्ट्रिंग में वह सामग्री होती है जो आपने (या उपयोगकर्ता ने) टाइप की थी, इसलिए यदि आप इस स्ट्रिंग को एक वेरिएबल में असाइन करते हैं तो आप इसका उपयोग कर सकेंगे।
एक सामान्य उदाहरण एक ग्रीटिंग प्रोग्राम है।
यह ऐसा दिखता है:
name = gets.chomp puts "Hello #{name}, nice to meet you!"
#{name}चीज़ को स्ट्रिंग इंटरपोलेशन कहा जाता है
इसे आज़माएं और देखें कि यह कैसे काम करता है।
- पहले, इस कोड को "greeting.rb" फाइल में सेव करें
- फिर, टर्मिनल प्रोग्राम से "ruby greeting.rb" के साथ इसका उपयोग करें
अपना नाम दर्ज करें और आपका प्रोग्राम आपका अभिवादन करेगा!
बहुत बढ़िया।
अब:
यह 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
इस कोड में, यदि आप gets के साथ chomp का उपयोग नहीं करते हैं, तो न्यूलाइन वर्ण (\n) के कारण दोनों स्ट्रिंग्स समान नहीं होंगी, इसलिए इसका मूल्यांकन false होगा।
बात दें…
यह gets के बाहर से प्राप्त स्ट्रिंग्स पर भी लागू होता है, जैसे डेटाबेस, फ़ाइल, या किसी अन्य स्रोत से प्राप्त डेटा।
इन विशेष वर्णों पर नज़र रखें!
Chomp बनाम Chop बनाम Strip
उपयोगकर्ता इनपुट को साफ करने के लिए आपको दो अन्य मेथड्स chop और strip उपयोगी लग सकते हैं।
strip के साथ आप व्हाइट स्पेस हटा सकते हैं।
उदाहरण:
" John Smith ".strip
chop के साथ आप हमेशा अंतिम वर्ण को हटा देंगे।
पहला वर्ण हटाना
एक और चीज़ जिसकी आपको आवश्यकता हो सकती है वह है शुरुआत से वर्णों को हटाना।
आप इसे इस तरह कर सकते हैं:
str = "Mr. John" str[0..3] = "" str # "John"
यह पहले चार वर्णों को हटा देता है।
दो Gets मेथड्स? प्लॉट गाढ़ा होता है!
एक विशेष मामला है…
जहां आपको केवल gets के बजाय $stdin.gets का उपयोग करना होगा।
यदि आपको इस तरह की त्रुटि मिलती है:
`gets': No such file or directory @ rb_sysopen
क्यों?
क्योंकि gets मेथड के दो संस्करण हैं।
- डिफ़ॉल्ट संस्करण फ़ाइल नाम पढ़ने का प्रयास करता है
- वैकल्पिक संस्करण (
$stdin.gets) हमेशा उपयोगकर्ता इनपुट से पढ़ता है
अब आप जानते हैं, यदि आप gets का उपयोग करते समय ऐसी त्रुटि देखते हैं, तो इसे $stdin.gets में बदलने का प्रयास करें।
सारांश
आपने gets और chomp मेथड्स के बारे में सीखा, वे क्या करते हैं, कैसे काम करते हैं, और वे उपयोगी क्यों हैं!
इस रूबी ट्यूटोरियल के साथ सीखते रहें।
पढ़ने के लिए धन्यवाद! 🙂