2014-04-21 5 views
26

मैंने सीखा कि gets एक नई लाइन बनाता है और उपयोगकर्ता को कुछ इनपुट करने के लिए कहता है, और gets.chomp एक ही चीज़ करता है सिवाय इसके कि यह एक नई लाइन नहीं बनाता है। gets किसी ऑब्जेक्ट को वापस करना होगा, इसलिए आप उस पर एक विधि कॉल कर सकते हैं, है ना? यदि ऐसा है, तो getstmp के रूप में उस ऑब्जेक्ट को नाम दें, तो आप chomptmp की विधि को कॉल कर सकते हैं। लेकिन gets से पहले tmp लौटाता है, इसे स्क्रीन पर एक नई लाइन मुद्रित करनी चाहिए। तो chomp क्या करता है? gets के बाद इसे नई लाइन हटा दें?रूबी काम में कैसे हो जाता है और हो जाता है।

मेरे प्रश्न को फिर से विस्तारित करने का एक और तरीका यह है: क्या निम्न क्रियाएं तब होती हैं जब मैं gets.chomp पर कॉल करता हूं?

  1. gets एक नई लाइन
  2. gets रिटर्न tmp प्रिंट
  3. tmp.chomp नई लाइन
  4. उपयोगकर्ता इनपुट

यह सही क्रम है निकालता है?

+2

'gets' एक नई लाइन नहीं आता है। उपयोगकर्ता इसे इनपुट करता है। 'हो जाता है' केवल यही गुजरता है। – sawa

उत्तर

44

gets उपयोगकर्ता को एक लाइन इनपुट करने देता है और इसे आपके प्रोग्राम के मान के रूप में लौटा देता है। इस मूल्य में पीछे की रेखा ब्रेक शामिल है। यदि आप उस मान पर chomp पर कॉल करते हैं, तो यह लाइन ब्रेक काट दिया जाता है। तो कोई गलत नहीं है कि तुम क्या है, यह नहीं बल्कि होना चाहिए:

  1. getsहो जाता है अंत में एक लाइन ब्रेक सहित पाठ की एक पंक्ति,
    • यह उपयोगकर्ता इनपुट
  2. gets रिटर्न एक स्ट्रिंग मान के रूप में पाठ की उस पंक्ति है।
  3. कि मूल्य पर chomp कॉलिंग लाइन ब्रेक

तथ्य यह है कि आप स्क्रीन पर पाठ की पंक्ति को देखने के केवल इसलिए है क्योंकि आप इसे वहाँ पहली जगह में प्रवेश किया निकाल देता है। gets आपके द्वारा दर्ज की गई चीज़ों के आउटपुट को जादुई रूप से दबा नहीं देता है।

10

प्रश्न यह नहीं होना चाहिए कि यह सही आदेश है, लेकिन यदि यह इस पर पहुंचने का सही तरीका है तो अधिक नहीं होना चाहिए। आपने ऐसा किया है।

इस पर एक नज़र डालें, जो आप "हासिल करना" चाहते हैं। सबसे पहले, आप tmp नामक चर को gets के वापसी मान निर्दिष्ट करते हैं। फिर आप chomp (को रूबी दस्तावेज़) में उस ऑब्जेक्ट पर विधि के रूप में समझाए गए हैं और आप देख सकते हैं कि चॉम्प ने नई लाइन को हटा दिया है। असल में chomp करता है, को हटा रहा है अपनी स्ट्रिंग के अंत में वर्ण दर्ज करें।जब आप एक समय में hello, प्रत्येक चार लिखते हैं और फिर Enter हो जाता है प्रेस सभी पत्र औरEnter लेता है। याद रखें कि Enter सिर्फ एक और चरित्र है।

1. tmp = gets 
hello 
=>"hello\n" 

2. tmp.chomp 
"hello" 

Gets अपने उपयोगकर्ता की इनपुट है। इसके अलावा, यह पता चला है कि gets या puts, मतलब get string * या put string के लिए puts अच्छा है। इसका मतलब है कि ये विधियां केवल strings से निपट रही हैं।

1

chomp स्ट्रिंग से पिछली नई पंक्ति वर्ण i.e. 'n n' को हटाने का तरीका है। जब भी "हो जाता है" उपयोगकर्ता से I/p लेने के लिए उपयोग किया जाता है तो यह स्ट्रिंग के अंत में नया लाइन वर्ण i.e। '\ N' जोड़ता है। इसलिए 'chomp' से '\ n' को निकालने के लिए उपयोग किया जाता है।

str = "नमस्ते गहरे लाल रंग का \ n"

str = str.chomp

str

ओ/पी डालता

"नमस्ते माणिक"

-2

का एक उदाहरण लें1.

x = gets 
y = gets 
puts x+y 

2.

x = gets.chomp 
y = gets.chomp 
puts x+y 

अब 1 और 2 अलग से चलाने के लिए और difference.thank आप

+0

आप जो इंगित करने का प्रयास कर रहे हैं, उपयोगकर्ता पहले से ही जानता है। सवाल पदार्थ की स्पष्टीकरण के बारे में है। –

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