En Ruby, les variables ne contiennent pas d’objet mais font référence à des objets. Mmmh. Un exemple :

var_01 = "Enveloppe"
var_02 = var_01
var_02.chop! # Ca supprime le dernier caractère
puts var_02 → Envelopp
puts var_01 → Envelopp

Tiens. Ma var_01 a été tronquée aussi alors qu’on a effectué l’opération sur var_02. C’est parce qu’en réalité, var_01 et var_02 font référence à un objet extérieur (en l’occurence “Enveloppe”) et ce dernier ayant été modifié par var_02, et bien lorsque var_01 y fait référence, on obtient la nouvelle valeur “Envelopp”.

Donc lorsque j’ai fait var_02 = var_01, je n’ai pas attribué de valeur à var_02 mais je lui ai dit de pointer au même endroit que var_01. Je ne sais pas si c’est courant dans d’autres langages de programmation (je n’ai pas l’impression).

Si vous voulez créer une copie, il suffit d’appeler la méthode .clone ou .dup.

A la suite

On peut référencer à la chaîne :

hauteur = largeur = 20
a = b = c = d = e = 4

A chaque fois, la valeur de droite est envoyé à son voisin de gauche.

En parallèle

Au lieu d’écrire plusieurs lignes pour assigner plusieurs valeurs à plusieurs variables, on peut écrire :

hip,hop = 3,4
hip → 3
hop → 4

Avec un Array

On peut assigner un tableau à une liste de variables.

mon_tableau = [23 , 45 , 64]
a,b,c = mon_tableau
a → 23
b → 45
c → 64

Plutôt pratique je trouve. Et si il n’y pas de valeur correspondante “en face”, la valeur “nil” est attribuée (c’est à dire “vide”).

mon_autre_tableau = [95 , 76]
a,b,c, = mon_autre_tableau
c → nil

Et si vous voulez éviter qu’une valeur soit modifiée par inadvertance, on peut appeler la méthode .freeze, même si c’est peu recommandé.

Il commence à y avoir un pas mal de code. Il va falloir bien organiser tout ça! On verra comment demain…