Mik*_*liy 15 ruby string comparison
val1 = 1
val2 = "1"
if val1 == val2 #< Question is in this line
end
Run Code Online (Sandbox Code Playgroud)
如何比较数字及其字符串表示?
Sin*_*our 30
转换为另一个,所以:
val1.to_s == val2 # returns true
Run Code Online (Sandbox Code Playgroud)
要么:
val1 == val2.to_i # returns true
Run Code Online (Sandbox Code Playgroud)
尽管ruby是动态类型的(类型在运行时已知),但它也是强类型的(类型不会隐式地进行类型转换)
假设您不知道其中任何一个是 nil、字母数字字符串或空字符串,我建议将两边都转换为字符串然后进行比较。
val1.to_str == val2.to_str => true
nil.to_str == "".to_str => true
"ab123".to_str == 123.to_str => false
Run Code Online (Sandbox Code Playgroud)