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, al método .initialize se le pasan todos los argumentos para inicializar el estado de la instancia.
  • Los nombres de las variables de instancia llevan el prefijo @.
  • Las variables de instancia valen nil por defecto hasta que se establecen explícitamente.
  • Las variables de instancia son privadas por defecto y deben manipularse con getters y setters
class Backpack
  initialize(owner)
    @owner = owner
  end

  def owner
    @owner
  end

  def owner=(new_owner)
    @owner = new_owner
  end
end
  • Los métodos con un = al final son reconocidos por Ruby como setters 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 que hay 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 esto lo llamamos «typo») en el ejemplo anterior (por ejemplo, @ownar), fallaría en silencio, lo que podría introducir un bug en el sistema.
    • Los getters y setters hacen que esto sea explícito y lanzarán un error cuando se cometa un error tipográfico.

Referencias

Inicialización de instancias de objeto

Variables de instancia

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

Aprende Variables de instancia

La práctica está bloqueada

Desbloquea 5 ejercicios más para practicar Variables de instancia