Сравнить число и его строковое представление

val1 = 1
val2 = "1"

if val1 == val2 #< Question is in this line
end

Как сравнить число и его строковое представление?

Ответы

Ответ 2

Предполагая, что вы не знаете, будет ли один из них ниль, алфавитно-цифровая строка или пустая строка, я предлагаю преобразовать обе стороны в строки и затем сравнить.

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

Ответ 3

Важное дополнение к этому вопросу:

Integer(val1) == Integer(val2)

Я пришел сюда, чтобы найти короткое решение, а не как явное, но это насколько я знаю, самый безопасный способ.

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

Ответ 4

У драгоценного камня finishing_moves есть метод #same_as, который выполняет сравнение без необходимости приведения типов.

val1 = 1
val2 = "1"

val1.same_as val2
# => True

val2.same_as val1
# => True

Ответ 5

Попробуйте это

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