Parcours
/
Ruby
Ruby
/
Programme
/
Variables d'instance
Va

Variables d'instance en Ruby

7 exercices

À propos de Variables d'instance

Points clés :

  • Quand la méthode .new d'une classe est appelée pour créer une instance d'objet, la méthode .initialize reçoit tous les arguments qui servent à initialiser l'état de l'instance.
  • les noms des variables d'instance sont préfixés par @.
  • les variables d'instance valent nil par défaut tant qu'elles ne sont pas définies explicitement.
  • les variables d'instance sont privées par défaut, et il convient de les manipuler avec des getters et des setters
class Backpack
  initialize(owner)
    @owner = owner
  end

  def owner
    @owner
  end

  def owner=(new_owner)
    @owner = new_owner
  end
end
  • Les méthodes dont le nom se termine par un = sont reconnues comme des setters par Ruby, et permettent l'usage du « sucre syntaxique » de la syntaxe d'affectation, par exemple Backpack.new("Sven").owner = "Ayah". Remarque l'espace entre owner et = alors que le nom réel de la méthode est owner=.
  • On peut créer des getters et des setters avec les méthodes attr_reader, attr_writer et attr_accessor :
    • attr_reader : crée des getters pour les symboles listés
    • attr_writer : crée des setters pour les symboles listés
    • attr_accessor : crée des getters et des setters pour les symboles listés
class Backpack
  attr_accessor :owner

  initialize(owner)
    @owner = owner
  end
end
  • Pourquoi utiliser des getters et des setters plutôt que la variable d'instance directement ?
    • S'il y avait une erreur typographique (on appelle ça une « typo ») dans l'exemple précédent (par exemple @ownar), elle échouerait silencieusement, ce qui introduirait potentiellement un bug dans le système.
    • Les getters et les setters rendent cela explicite, et lèvent une erreur en cas de typo.

Références

Initialiser des instances d'objet

Variables d'instance

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Variables d'instance

L'entraînement est verrouillé

Déverrouille 5 exercices de plus pour t'entraîner sur Variables d'instance