Ruby est un peu paresseux
Voici un mécanisme interne du langage Ruby démontré le temps d’une petite session irb.
D’abord, créons la variable a
, qui va contenir la chaîne "one"
:
Créons ensuite la variable b
, qui va contenir ce que contient la variable a
,
c’est à dire aussi "one"
:
Question : est ce que les variables a
et b
partagent le même emplacement en
mémoire ?
Et bien oui, b = a
n’a pas copié la valeur de a
dans b
, mais a assigné
à b
la même case mémoire que a
:
Mais alors si on change la valeur de la variable a
, ça va changer aussi celle
de b
? Et non :
L’emplacement mémoire a été modifié. On a maintenant deux variables bien distinctes :
Tant qu’il n’y a pas de modification de l’une ou de l’autre des variables, Ruby agit en quelque sorte comme si il n’y en avait qu’une seule. J’imagine que c’est pour soulager l’utilisation de la mémoire.
Mais dès que l’une ou l’autre est modifiée, les deux variables deviennent bien distinctes.