2009-08-02 15 views

उत्तर

28

Convert या तो अन्य के लिए है, तो या तो:

val1.to_s == val2 # returns true 

या:

val1 == val2.to_i # returns true 

हालांकि माणिक dynamically typed (प्रकार कार्यावधि में जाना जाता है) है, यह भी strongly typed (प्रकार नहीं करता है स्पष्ट रूप से टाइपकास्ट नहीं मिलता है)

+6

मैं, पहला सुझाव (स्ट्रिंग के लिए पूर्णांक बदल रहा है) के साथ जाना चाहते हैं, क्योंकि यदि आप "9abc" इस तरह की स्ट्रिंग परिवर्तित to_i का उपयोग कर पूर्णांक, तुम वापस दिया जाता है पूर्णांक 9, जो उचित नहीं हो सकता है, और यदि संभवतः यह इरादा नहीं है तो संभवतः बग का कारण बनता है। – ehsanul

3

मान लीजिए कि आप नहीं जानते कि कोई भी शून्य होगा, अल्फा-न्यूमेरिक स्ट्रिंग या खाली स्ट्रिंग, मैं सुझाव देता हूं कि दोनों तरफ तारों को परिवर्तित करें डी तो तुलना कर रहा हूँ।

val1.to_str == val2.to_str => true 
nil.to_str  == "".to_str => true 
"ab123".to_str == 123.to_str => false 
0

इस सवाल का एक महत्वपूर्ण इसके अलावा:

Integer(val1) == Integer(val2) 

मैं यहाँ एक छोटी समाधान, के रूप में स्पष्ट नहीं की तलाश में आया है, लेकिन इस के रूप में जहाँ तक मुझे पता है सबसे सुरक्षित तरीका है।

Integer("123a") # ArgumentError: invalid value for Integer(): "123a" 
+1

सावधान रहें! यदि आप रेडिक्स निर्दिष्ट नहीं करते हैं तो स्ट्रिंग्स जो "0" से शुरू होती हैं, उन्हें ऑक्टल में व्याख्या की जाएगी! https://ruby-doc.org/core-2.2.3/Kernel.html#method-i- इंटेगर –

0

finishing_moves मणि एक #same_as विधि है कि किसी भी typecasting करने के लिए बिना तुलना करता है।

val1 = 1 
val2 = "1" 

val1.same_as val2 
# => True 

val2.same_as val1 
# => True 
0

प्रयास करें इस

true if Integer(val1) == Integer(val2) rescue false 
+1

यह क्या करता है? यह समस्या को कैसे हल करता है? – Adam

+0

कृपया इस उत्तर में अधिक जानकारी जोड़ें। क्या हो रहा है? यह क्यों काम कर रहा है? – Jens

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