उपयोग पूर्णांक (स्ट्रिंग)
यह एक ArgumentError त्रुटि बढ़ा देंगे यदि स्ट्रिंग एक पूर्णांक में परिवर्तित नहीं कर सकते हैं।
Integer('5abc') #=> ArgumentError: invalid value for Integer(): "5abc"
Integer('5') #=> 5
आप अभी भी अपने number_or_nil विधि की जरूरत है अगर आप व्यवहार जब एक स्ट्रिंग नहीं बदला जा सकता है कि नहीं के बराबर दिया जाता है होना चाहता हूँ चाहते हैं।
def number_or_nil(string)
Integer(string || '')
rescue ArgumentError
nil
end
आपको किसी विशेष अपवाद से बचाव के लिए सावधान रहना चाहिए। एक नंगे बचाव (जैसे कि "बचाव नील") मानक त्रुटि से प्राप्त किसी भी त्रुटि से बचाव करेगा और आपके प्रोग्राम के निष्पादन में हस्तक्षेप कर सकता है जिस तरह से आप उम्मीद नहीं करते हैं। इंटीजर() एक ArgumentError उठाएगा, तो इसे निर्दिष्ट करें।
आप बल्कि अपवादों के साथ सौदा नहीं करना चाहते तो और केवल आपके अंतर्निहित वापसी मान का लाभ उठाने और के रूप में यह लिख सकते हैं अपने number_or_nil के संक्षिप्त संस्करण पसंद करते हैं:
def number_or_nil(string)
num = string.to_i
num if num.to_s == string
end
number_or_nil '5' #=> 5
number_or_nil '5abc' #=> nil
इस तरह से आप उम्मीद करते हैं काम करेंगे।
स्रोत
2014-07-27 11:50:00
'5 '' '5' या' शून्य' होना चाहिए? –
प्रश्न स्पष्ट नहीं है। 'To_i' के साथ क्या गलत है? "यह रूपांतरण" क्या है? – sawa
शून्य मैं अपेक्षा करता हूं, हालांकि मैं संभवतः 5 के साथ रह सकता हूं। –