val1 = 1
val2 = "1"
if val1 == val2 #< Question is in this line
end
संख्या और इसकी स्ट्रिंग प्रस्तुति की तुलना कैसे करें?तुलना संख्या और इसकी स्ट्रिंग प्रस्तुति
val1 = 1
val2 = "1"
if val1 == val2 #< Question is in this line
end
संख्या और इसकी स्ट्रिंग प्रस्तुति की तुलना कैसे करें?तुलना संख्या और इसकी स्ट्रिंग प्रस्तुति
Convert या तो अन्य के लिए है, तो या तो:
val1.to_s == val2 # returns true
या:
val1 == val2.to_i # returns true
हालांकि माणिक dynamically typed (प्रकार कार्यावधि में जाना जाता है) है, यह भी strongly typed (प्रकार नहीं करता है स्पष्ट रूप से टाइपकास्ट नहीं मिलता है)
मान लीजिए कि आप नहीं जानते कि कोई भी शून्य होगा, अल्फा-न्यूमेरिक स्ट्रिंग या खाली स्ट्रिंग, मैं सुझाव देता हूं कि दोनों तरफ तारों को परिवर्तित करें डी तो तुलना कर रहा हूँ।
val1.to_str == val2.to_str => true
nil.to_str == "".to_str => true
"ab123".to_str == 123.to_str => false
इस सवाल का एक महत्वपूर्ण इसके अलावा:
Integer(val1) == Integer(val2)
मैं यहाँ एक छोटी समाधान, के रूप में स्पष्ट नहीं की तलाश में आया है, लेकिन इस के रूप में जहाँ तक मुझे पता है सबसे सुरक्षित तरीका है।
Integer("123a") # ArgumentError: invalid value for Integer(): "123a"
सावधान रहें! यदि आप रेडिक्स निर्दिष्ट नहीं करते हैं तो स्ट्रिंग्स जो "0" से शुरू होती हैं, उन्हें ऑक्टल में व्याख्या की जाएगी! https://ruby-doc.org/core-2.2.3/Kernel.html#method-i- इंटेगर –
finishing_moves
मणि एक #same_as
विधि है कि किसी भी typecasting करने के लिए बिना तुलना करता है।
val1 = 1
val2 = "1"
val1.same_as val2
# => True
val2.same_as val1
# => True
मैं, पहला सुझाव (स्ट्रिंग के लिए पूर्णांक बदल रहा है) के साथ जाना चाहते हैं, क्योंकि यदि आप "9abc" इस तरह की स्ट्रिंग परिवर्तित to_i का उपयोग कर पूर्णांक, तुम वापस दिया जाता है पूर्णांक 9, जो उचित नहीं हो सकता है, और यदि संभवतः यह इरादा नहीं है तो संभवतः बग का कारण बनता है। – ehsanul