¿Hay un método Ruby que toma una cadena y un valor predeterminado y lo convierte en entero si la cadena representa un entero o devuelve el valor predeterminado de lo contrario?Convertir Ruby String en Integer con el valor predeterminado
actualización Creo que la siguiente respuesta es preferible:
class String
def try_to_i(default = nil)
/^\d+$/ === self ? to_i : default
end
end
Aquí es evidencia por las que debe evitar excepciones:
> 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
¿Qué quiere decir con "contiene un número entero"? –
'" la optimización prematura es la raíz de todo mal "' - Donald Knuth – Reactormonk