Вы можете спросить сами объекты, являются ли они числами.
"column heading".respond_to?(:to_int) # => false
3.1415926.respond_to?(:to_int) # => true
new_arr = arr.map do |string_or_float|
if string_or_float.respond_to?(:to_int)
string_or_float.to_int # Change from a float into an integer
else
string_or_float # Leave the string as-is
end
end
respond_to?(:to_int)
означает «Могу ли я позвонить вам to_int
?»
to_int
метод, который должны иметь только объекты, которые легко конвертируются в целые числа.В отличие от to_i
, что означает «Я не очень похож на целое число, но вы можете попытаться преобразовать меня в целое число», to_int
означает «Я очень похож на целое число - преобразовать меня в целое число сполная уверенность! "