24.3. Más diversión con la fruta

Si nadie se come nuestra fruta madura, quizás es momento de que pague su precio.


ruby> class Fruta
ruby|   def time_passes
ruby|           @condition = "podrida"
ruby|   end
ruby| end
nil
ruby> f2
una banana madura
ruby> f2.time_passes
"podrida"
ruby> f2
una banana podrida

Pero mientras estábamos jugando con esto se ha introducido un pequeño problema. ¿Qué ocurre si intentamos crear una tercera pieza de fruta en estos momentos? Recuérdese que las variables instancia no existen hasta que no se les asigne valor.


ruby> f3 = Fruta.new
ERR: failed to convert nil into String

El que se queja es el método inspect y con motivos. Se le ha indicado que informe sobre el tipo y la condición de una pieza de fruta, pero f3 no tiene asignado ninguno de sus atributos. Si se quiere, es posible redefinir este método para que compruebe que las variables instancia están definidas (utilizando el método defined?) e informar de ellos sólo si es así aunque esto puede que no sea de mucha utilidad dado que toda pieza de fruta es de un tipo y está en una determinada condición, parece que se debiera asegurar que los atributos se definen de alguna forma. Este es el tema del siguiente capítulo.