¿Cómo podría simplificar esta en Ruby:Ruby: ¿Cómo incrementar un número que puede ser nulo?
x = (x || 0) + 1
?
¿Cómo podría simplificar esta en Ruby:Ruby: ¿Cómo incrementar un número que puede ser nulo?
x = (x || 0) + 1
?
Se puede utilizar para convertir to_i
nil
a 0
x = x.to_i + 1
O puede utilizar succ
x = x.to_i.succ
Su código puede terminar en un error:
x = 'a'
x = (x || 0) + 1 #can't convert Fixnum into String (TypeError)
Existe la posibilidad de utilizar to_i
con +1
o succ
(ver Chandras answer)
Pero tal vez sólo succ
le ayudará también:
x = x.succ if x.respond_to?(:succ)
La respuesta correcta depende de los datos de entrada y lo que necesita .
Eso depende de lo que considere simple. Puede usar
(x ||= 0) += 1
pero creo que me conformaré con su versión.
Si x
es un valor Hash, consulte this answer para utilizar los valores predeterminados en Hashes.
Esto no funciona en Ruby 2.0 –
me parece bastante bueno (bueno, x2 = (x || 0) + 1 sería mejor), más explícito que las conversiones "mágicas" a_i. – tokland
¿Cuánto más simple puede obtener? ¿Por qué crees que hay espacio para mejorar tu solución existente? – meagar