25.3. Inicialización flexible

Hemos visto que una vez que se asocia un argumento al método initialize no se puede omitir sin que se genere un error. Si queremos ser más considerados podemos utilizar el argumento si se proporciona, y en caso contrario, recurrir al valor por defecto.


ruby> class Fruta
ruby|   def initialize(k="manzana")
ruby|     @kind = k
ruby|     @condition = "madura"
ruby|   end
ruby| end
nil
ruby> f5 = Fruta.new "pera"
una pera madura
ruby> f6 = Fruta.new
una manzana madura

Se pueden utilizar los valores por defecto de un argumento en cualquier método no sólo en initialize. Los argumentos hay que organizarlos de tal forma que aquellos con valores por defecto aparezcan al final de la lista.

A veces es útil tener varias formas de inicializar un objeto. Aunque está fuera del ámbito de este tutorial, Ruby permite reflexión sobre los objetos y listas de argumentos de tamaño variable. Ambas técnicas combinadas permiten realizar sobrecarga de métodos.