Tracks
/
Ruby
Ruby
/
Temario
/
Variables de instancia
Va

Variables de instancia en Ruby

7 ejercicios

Acerca de Variables de instancia

Puntos clave:

  • Cuando se llama al método .new de una clase para crear una instancia de objeto, se le pasan todos los argumentos al método .initialize para inicializar el estado de la instancia.
  • Los nombres de las variables de instancia llevan el prefijo @.
  • Las variables de instancia tienen el valor nil por defecto hasta que se les asigna un valor de forma explícita.
  • Las variables de instancia son privadas por defecto, y se deben manipular con getters y setters.
class Backpack
  initialize(owner)
    @owner = owner
  end

  def owner
    @owner
  end

  def owner=(new_owner)
    @owner = new_owner
  end
end
  • Ruby reconoce como setters los métodos cuyo nombre termina en =, y permiten el uso del «azúcar» sintáctico de la sintaxis de asignación, por ejemplo, Backpack.new("Sven").owner = "Ayah". Fíjate en el espacio entre owner y =, mientras que el nombre real del método es owner=.
  • Los getters y setters se pueden crear con los métodos attr_reader, attr_writer y attr_accessor:
    • attr_reader: crea getters para los símbolos listados
    • attr_writer: crea setters para los símbolos listados
    • attr_accessor: crea getters y setters para los símbolos listados
class Backpack
  attr_accessor :owner

  initialize(owner)
    @owner = owner
  end
end
  • ¿Por qué usar getters y setters en lugar de la variable de instancia directamente?
    • Si hubiera un error tipográfico (a estos los llamamos «typos») en el ejemplo anterior (por ejemplo, @ownar), fallaría en silencio y podría introducir un bug en el sistema.
    • Los getters y setters hacen esto explícito, y lanzan un error cuando se comete un error tipográfico.

Referencias

Inicializar instancias de objeto

Variables de instancia

Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Variables de instancia

La práctica está bloqueada

Desbloquea 5 ejercicios más para practicar Variables de instancia