2009-08-02 15 views

cevap

28

dönüştürme ya da diğer, böylece her iki:

val1.to_s == val2 # returns true 

Veya: yakut dynamically typed (tip zamanında bilinir) olduğu

val1 == val2.to_i # returns true 

de, aynı zamanda strongly typed (tip doesn olduğu 't ya bir, bir alfa-sayısal dize veya boş dize, bir dizelere her iki tarafı da dönüştürme öneririz nil olurdu bilmediğimi varsayarsak

+6

bu Uygun olmayan ve niyet olmasa bile hatalara neden olabilecek 9 numaralı tamsayı. – ehsanul

3

) örtülü kalıplaştığı olsun d sonra karşılaştırıyor.

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

bu soruya yapılan önemli bir katkı:

Integer(val1) == Integer(val2) 

Burada kısa bir çözelti olarak açık değil aramak için geldiğine, ama bu kadarıyla en güvenli yolu biliyorum gibidir.

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

Dikkatli olun! Eğer radix belirtmezseniz "0" ile başlayan diziler sekizlik olarak yorumlanacaktır! https://ruby-doc.org/core-2.2.3/Kernel.html#method-i-Integer –

0

finishing_moves taş bir isleminden yapmak zorunda kalmadan karşılaştırma yapar bir #same_as yöntemi vardır.

val1 = 1 
val2 = "1" 

val1.same_as val2 
# => True 

val2.same_as val1 
# => True 
0

deneyin Eğer to_i kullanarak tamsayı "9abc" gibi bir dize dönüştürmek eğer, geri verilir çünkü ilk öneri (dizeye tamsayı değiştirme) ile gitmek istiyorum

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

Bu ne yapar? Problemi nasıl çözer? – Adam

+0

Lütfen bu cevaba daha fazla bilgi ekleyin. Ne oluyor? Bu neden çalışıyor? – Jens

İlgili konular