Les variables en Ruby

Introduction aux variables

Dans le langage Ruby, une variable est un étiquette qui est associée à un objet particulier. Ruby dispose de quatre types principaux de variables, et chaque type se distingue par un caractère spécial placé au début de son nom.

Variables locales

Les variables locales doivent commencer par une lettre minuscule ou un underscore (_). Elles sont limitées au bloc de code de la méthode où elles sont déclarées.

color = "rouge"
_person = "Julien"

Ici, le mot "color" n’a rien de particulier ; c’est simplement un nom de variable. Vous pourriez par exemple le remplacer par "pizza", mais cela pourrait prêter à confusion pour un lecteur.

Variables d’instance

Les variables d’instance commencent par un symbole @. Ces variables appartiennent à un objet spécifique.

class Personne
  def initialize(prenom, nom)
    # Variables d’instance
    @prenom = prenom
    @nom = nom
  end

  # Affiche le nom complet
  def afficher_nom_complet()
    puts "Nom complet : #{@prenom} #{@nom}"  
  end
end

# Création des objets
personne1 = Personne.new("Sophie", "Dufresne")
personne2 = Personne.new("Thomas", "Martin")

# Appel des méthodes
personne1.afficher_nom_complet()
personne2.afficher_nom_complet()

Sortie : Nom complet : Sophie Dufresne Nom complet : Thomas Martin

Variables de classe

Les variables de classe commencent par un symbole @@. Elles sont partagées entre tous les objets de la même classe et leurs descendants. Elles doivent également être initialisées avant utilisation.

class Personne
  # Variable de classe
  @@nombre_de_personnes = 0

  def initialize(prenom, nom)
    @prenom = prenom
    @nom = nom
    @@nombre_de_personnes += 1
  end

  # Affiche le nom complet
  def afficher_nom_complet()
    puts "Nom complet : #{@prenom} #{@nom}"
  end

  def afficher_nombre_de_personnes()
    puts "Nombre total de personnes : #{@@nombre_de_personnes}"
  end
end

# Création des objets
personne1 = Personne.new("Sophie", "Dufresne")
personne2 = Personne.new("Thomas", "Martin")

# Appel des méthodes
personne1.afficher_nom_complet()
personne1.afficher_nombre_de_personnes()
personne2.afficher_nom_complet()
personne2.afficher_nombre_de_personnes()

Sortie : Nom complet : Sophie Dufresne Nombre total de personnes : 1 Nom complet : Thomas Martin Nombre total de personnes : 2

Variables globales

Les variables globales commencent par un symbole $. Contrairement aux variables de classe, celles-ci sont accessibles depuis n'importe où dans le programme.

# Variable globale
$score_initial = 0

class ClasseA
  def afficher_score_initial
    # Accéder à la variable globale
    puts "Le score initial dans ClasseA est #{$score_initial}"
  end
end

class ClasseB
  def afficher_score_initial
    # Accéder à la variable globale
    puts "Le score initial dans ClasseB est #{$score_initial}"
  end
end

# Instances des classes
objet1 = ClasseA.new
objet1.afficher_score_initial
objet2 = ClasseB.new
objet2.afficher_score_initial

Sortie : Le score initial dans ClasseA est 0 Le score initial dans ClasseB est 0