Menu
Coddy logo textTech

Les symboles comme clés de Hash

Fait partie de la section Fondamentaux du Journey Ruby de Coddy — leçon 78 sur 88.

Jusqu'à présent, vous avez utilisé des chaînes de caractères comme clés de hash avec la syntaxe hash rocket. Cependant, les développeurs Ruby utilisent couramment des symboles comme clés à la place, ce qui offre une approche plus propre et plus efficace.

Vous vous souvenez des symboles vus précédemment ? Ce sont des identifiants légers et immuables qui commencent par deux-points. Lorsqu'on utilise des symboles comme clés, Ruby propose une syntaxe abrégée spéciale :

person = {name: "Alice", age: 25, city: "Paris"}

puts person  # Affiche : {:name=>"Alice", :age=>25, :city=>"Paris"}

Remarquez comment name: remplace :name =>. Ce raccourci ne fonctionne que lorsque la clé est un symbole. Pour accéder aux valeurs, utilisez le symbole avec des crochets :

person = {name: "Alice", age: 25}

puts person[:name]  # Affiche : Alice
puts person[:age]   # Affiche : 25

L'ajout et la modification d'entrées fonctionnent de la même manière :

person = {name: "Alice"}

person[:city] = "Paris"
person[:name] = "Bob"

puts person  # Affiche : {:name=>"Bob", :city=>"Paris"}

Les symboles sont préférés comme clés de hash car ils sont plus rapides à comparer que les chaînes de caractères et utilisent moins de mémoire. Vous verrez ce motif tout au long du code Ruby, il vaut donc la peine de s'y habituer.

challenge icon

Défi

Facile

Lisez trois lignes d'entrée :

  1. Une marque de voiture (chaîne de caractères)
  2. Un nom de modèle (chaîne de caractères)
  3. Une année (entier)

Créez un hash appelé car en utilisant la syntaxe abrégée des symboles (par exemple, key: value) avec les paires clé-valeur suivantes :

  • :brand associée à la marque de la voiture
  • :model associée au nom du modèle
  • :year associée à l'année (en tant qu'entier)

Ensuite, effectuez ces opérations :

  1. Affichez la valeur de la clé :model
  2. Ajoutez une nouvelle clé :color avec la valeur "black"
  3. Mettez à jour la clé :year en ajoutant 1 à sa valeur actuelle
  4. Affichez le hash final

Par exemple, si les entrées sont Toyota, Camry, et 2020, la sortie devrait être :

Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}

Si les entrées sont Honda, Civic, et 2018, la sortie devrait être :

Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}

Si les entrées sont Ford, Mustang, et 2023, la sortie devrait être :

Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}

Aide-mémoire

Ruby propose une syntaxe raccourcie pour créer des hachages avec des clés de type symbole :

person = {name: "Alice", age: 25, city: "Paris"}

Cela équivaut à utiliser la syntaxe "hash rocket" avec des symboles :

person = {:name => "Alice", :age => 25, :city => "Paris"}

Pour accéder aux valeurs d'un hachage avec des clés de type symbole, utilisez des crochets avec le symbole :

puts person[:name]  # Affiche : Alice
puts person[:age]   # Affiche : 25

L'ajout et la modification d'entrées fonctionnent de la même manière qu'avec des clés de type chaîne de caractères :

person[:city] = "Paris"  # Ajoute une nouvelle paire clé-valeur
person[:name] = "Bob"    # Modifie la valeur existante

Les symboles sont préférés comme clés de hachage car ils sont plus rapides à comparer que les chaînes de caractères et utilisent moins de mémoire.

Essayez vous-même

# Lire l'entrée
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i

# TODO : Écrivez votre code ci-dessous
# 1. Créez un hash appelé 'car' en utilisant la syntaxe abrégée des symboles avec les clés :brand, :model et :year

# 2. Affichez la valeur de la clé :model

# 3. Ajoutez une nouvelle clé :color avec la valeur "black"

# 4. Mettez à jour la clé :year en ajoutant 1 à sa valeur actuelle

# 5. Affichez le hash final
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux