val1 = 1
val2 = "1"
if val1 == val2 #< Question is in this line
end
Sayı ve dizgi gösterimi nasıl karşılaştırılır?Karşılaştırın ve dizenin gösterimini yapın
val1 = 1
val2 = "1"
if val1 == val2 #< Question is in this line
end
Sayı ve dizgi gösterimi nasıl karşılaştırılır?Karşılaştırın ve dizenin gösterimini yapın
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
) ö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
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"
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 –
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
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
bu Uygun olmayan ve niyet olmasa bile hatalara neden olabilecek 9 numaralı tamsayı. – ehsanul