Asignaciones y referencias

Miremos este método con más detenimiento:

def volar_en_circulos!
   @energia = @energia - 10
end

Lo que estamos haciendo es cambiar la energía de Pepita: pasa de su valor actual, @energia, a ese valor menos 10. Por ejemplo, pasa de 100 a 90. ¿Significa esto que el 100 se transforma en un 90 ? :frowning: :thought_balloon:

No, en absoluto. En objetos trabajamos con referencias: energia (un atributo) es una referencia a un objeto, que inicialmente apunta al objeto 100. Si pensamos a los objetos como círculos y las referencias como flechas, podemos graficarlo de la siguiente manera:

Luego, la operación de asignación cambia ese apuntador, que pasa a referenciar al 90:

En este caso se da una particularidad: el objeto asignado a la referencia es el resultado de enviar el mensaje - al objeto apuntado originalmente por la referencia: @energia = @energia - 10. Y como esta operación es tan común, se puede escribir de una forma más corta: @energia -= 10.

Reescribí los métodos que hiciste en el ejercicio anterior para que usen cuando puedan el -=, y su contrapartida, el +=.

Tenés que iniciar sesión antes de empezar a enviar tus soluciones