Преобразование строки Ruby в целое число со значением по умолчанию

Существует ли метод Ruby, который принимает строку и значение по умолчанию и преобразует их в целое число, если строка представляет собой целое число, или возвращает значение по умолчанию в противном случае?

обновление Я думаю, что следующий ответ предпочтительнее:

class String
  def try_to_i(default = nil)
    /^\d+$/ === self ? to_i : default
  end
end

Вот доказательства того, почему вы должны избегать исключений:

> def time; t = Time.now; yield; Time.now - t end

> time { 1000000.times { |i| ('_' << i.to_s) =~ /\d+/ } }
=> 1.3491532 
> time { 1000000.times { |i| Integer.new('_' << i.to_s) rescue nil } }
=> 27.190596426 
6
задан Alexey 27 April 2012 в 10:09
поделиться