Différences entre String et Symbol
28/ 11/ 2006
Attention ! Billet en cours de rédaction.
Créons un tableau contenant cinq objets String :
1 2 3 4 5 |
tab_string = Array.new 5.times do tab_string << "string" end |
Créons un tableau contenant cinq objets Symbol :
1 2 3 4 5 |
tab_symbol = Array.new 5.times do tab_symbol << :symbol end |
Vérifions l’espace mémoire de chacunes des variables de chaque tableau :
Pour le tableau de String :
1 2 3 4 5 6 |
tab_string.each {|v| puts v.object_id }
24875790
24875780
24875770
24875760
24875750 |
Ici on peut voir que chaque objet String contenu dans le tableau tab_string aloue un espace mémoire différent (donc un identifiant d’objet différent) alors que l’objet String à la même valeur : “string”.
Pour le tableau de Symbol:
1 2 3 4 5 6 |
tab_symbol.each {|v| puts v.object_id }
244098
244098
244098
244098
244098 |
Pour le tableau de Symbol, c’est différent. On s’aperçoit que chaque objet Symbol contenu dans le tableau tab_symbol appartiennent au même espace mémoire.
Désolé, mais les commentaires sont fermés pour ce billet