2013-02-15 12 views
16

मैंने फिक्सम को स्ट्रिंग (टाइप एरर) में त्रुटि को परिवर्तित नहीं किया है और जब तक यह काफी आसान लगता है, मैं इस बारे में अनिश्चित हूं कि कैसे आसपास जाना है यह। मैंने सोचा कि मेरा तर्क ध्वनि था - दर्ज स्ट्रिंग वैरिएबल को एक पूर्णांक में परिवर्तित करें और फिर मूल ऑपरेशन करें - लेकिन स्पष्ट रूप से मुझे कुछ महत्वपूर्ण जानकारी याद आ रही है।'+' फिक्सनम स्ट्रिंग में टाइप नहीं कर सकता है (TypeError)

puts 'What is your favourite number?' 
favenum = gets.chomp 
better = favenum.to_i + 1 
puts 'Yeah '+favenum+' is nice enough but '+better+' is bigger and better by far! Think on.'  

एक उत्तर खोजने की कोशिश की है लेकिन वर्तमान में मेरे प्राथमिक रूबी कौशल से परे एक ही त्रुटि के उदाहरण हैं।

उत्तर

48

रुबी (कुछ अन्य भाषाओं के विपरीत) String#+ विधि में संचालन करते समय ऑब्जेक्ट्स को तारों में नहीं डालता है। या तो स्वयं स्ट्रिंग के लिए डाली:

puts 'Yeah ' + favenum.to_s + ' is nice enough but ' + better.to_s + ' is bigger and better by far!' 

या उपयोग स्ट्रिंग प्रक्षेप (ध्यान दें दोहरे उद्धरण चिह्नों):

puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far!" 
+0

तो मेरे कोड में त्रुटि चर के आउटपुट में है, न कि ऊपर की रेखाओं में उनके हेरफेर में? क्या मैं सोचने में सही हूं कि मूल रूप से स्ट्रिंग के रूप में संग्रहीत किया जाता है? हो सकता है कि मैं जिस ट्यूटोरियल का अनुसरण कर रहा हूं (http://pine.fm/LearnToProgram/?Chapter=04) क्या यह सब कुछ नहीं है ...? –

+0

@DanSolo: दरअसल, 'favenum' वास्तव में एक स्ट्रिंग है और त्रुटि का कारण नहीं बनना चाहिए। यह पूर्णांक 'बेहतर' चर है जो इसका कारण बनता है। –

+0

ग्रेट, धन्यवाद। अब आप इसका जिक्र करते हैं मैं तर्कसंगत रूप से देख सकता हूं कि 'बेहतर +' का उपयोग क्यों किया जाता है जब एक पूर्णांक एक त्रुटि का कारण बनता है। इसके आसपास होने में वैकल्पिक विकल्पों के लिए धन्यवाद। मेरी यात्रा जारी है ... –

5

इस तरह, स्ट्रिंग प्रक्षेप उपयोग करके देखें:

puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far! Think on." 
2

ट्यूटोरियल के आधार पर आप

puts 'Please enter your favourite number: ' 
number = gets.chomp 
imp = number.to_i + 1 
puts 'I\'d say '.to_s + imp.to_s + ' is a much better number.' 
का पालन कर रहे हैं

शुरुआती स्तर पर "सही" परिणाम उत्पन्न करता है।

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