Les symboles
1. Principe
Un symbole est une référence de syntaxe :nom sur un nom utilisé pour une classe, variable, méthode ou chaîne. Ce symbole est défini par la classe Symbol. Il est indépendant du contexte, c’est-à-dire que si vous avez une classe C et une méthode C, le symbole vers C sera identique. Nous pouvons l’observer dans l’exemple ci-dessous avec l’usage de object_id pour connaître l’identifiant de notre symbole.
Exemple :
hello="ok"
ref = :hello
def hello()
puts :hello.object_id
end
hello()
# Résultat : 99298
puts ref.object_id
# Résultat : 99298
2. Avantage
Les symboles peuvent être utiles pour économiser la mémoire, par exemple dans les tableaux, les tables de hachage. À chaque fois que l’on crée une chaîne en Ruby, c’est un nouvel objet, en passant par les symboles on économise cette multiplication des objets. Les symboles sont pour cette raison massivement employés dans le framework Ruby on Rails.
Exemple :
hello="ok"
puts hello.object_id
# Résultat : 20808220
world="ok"
puts world.object_id
# Résultat : 20808200
# On a deux objets en mémoire
hello=:ok
puts hello.object_id
# Résultat : 99458
world=:ok
puts world.object_id
# Résultat : 99458
# On a bien qu'un seul objet en mémoire
# Exemple avec une table de hachage
table = {}
table[ :nom ] = "fogg"
table[ :prenom ] = "phileas"
puts...