Malgré la lecture de "la Compréhension de Ruby Symboles", je suis toujours confus par la représentation des données dans la mémoire quand il s'agit de l'utilisation de symboles. Si un symbole, deux d'entre eux contenues dans des objets différents, existent dans le même emplacement de mémoire, alors comment est-il qu'ils contiennent différentes valeurs? J'aurais attendu le même emplacement de mémoire pour contenir la même valeur. Un devis à partir du lien:
Contrairement aux chaînes de caractères, symboles du même nom sont initialisés et d'exister dans la mémoire qu'une seule fois au cours d'une session de ruby
Je ne comprends pas comment il parvient à différencier les valeurs contenues dans le même emplacement de mémoire.
MODIFIER
Considérons donc l'exemple:
patient1 = { :ruby => "red" }
patient2 = { :ruby => "programming" }
patient1.each_key {|key| puts key.object_id.to_s}
3918094
patient2.each_key {|key| puts key.object_id.to_s}
3918094
patient1
et patient2
sont à la fois des tables de hachage, c'est bien. :ruby
, cependant, est un symbole. Si nous étions de sortie suivants:
patient1.each_key {|key| puts key.to_s}
Puis ce sera sortie? "red"
ou "programming"
?
MODIFIER
Je suis encore très très confus. Je pense à un symbole est un pointeur sur une valeur. Oubliez les hachages pour une seconde. Les questions que j'ai sont; vous pouvez assigner une valeur à un symbole? Est un symbole juste un pointeur vers une variable avec une valeur en elle? Si les symboles sont mondiaux, cela signifie un symbole renvoie toujours à une chose?