Sobes.tech
Intern

Qu'est-ce qu'un hash (HASH) en Ruby?

sobes.tech IA

Réponse de l'IA

Hash (Hash) en Ruby est une collection ordonnée de paires "clé-valeur", où chaque clé unique est associée à une valeur spécifique. Les clés sont généralement des symboles (Symbol) ou des chaînes (String), mais peuvent être n'importe quel objet implémentant les méthodes eql? et hash.

Caractéristiques du hash :

  • Ordre : Depuis Ruby 1.9, les hashes maintiennent l'ordre d'insertion des éléments.
  • Accès par clé : L'accès aux valeurs se fait rapidement via la clé correspondante.
  • Taille dynamique : Les hashes peuvent s'étendre ou se réduire à mesure que des éléments sont ajoutés ou supprimés.
  • Pas de clés en double : Chaque clé est unique dans un hash.

Exemples de création de hashes :

# Utilisation de littéral
personne = { "nom" => "Alice", "âge" => 30 }

# Utilisation de symboles comme clés (plus courant et efficace)
paramètres = { :thème => "sombre", :langue => "ru" }

# Notation style hash avec symboles (Ruby 1.9+)
config = { hôte: "localhost", port: 8080 }

# Avec le constructeur Hash.new
hash_vide = Hash.new

Opérations principales sur les hashes :

Opération Exemple Description
Accès à la valeur personne["nom"] Retourne la valeur associée à la clé "nom"
Ajout/modification personne["ville"] = "New York" Ajoute ou modifie la paire clé-valeur
Suppression personne.delete("âge") Supprime la paire avec la clé "âge"
Taille personne.size ou personne.length Retourne le nombre de paires dans le hash
Vérification de clé personne.key?("nom") Vérifie si la clé existe dans le hash
Vérification de valeur personne.value?(30) Vérifie si la valeur existe dans le hash
Itération `personne.each { clé, valeur
Clés personne.keys Retourne un tableau de toutes les clés
Valeurs personne.values Retourne un tableau de toutes les valeurs

Exemple d'utilisation :

données_utilisateur = {
  nom: "Boris",
  âge: 45,
  ville: "Moscou"
}

# Accès aux données
puts données_utilisateur[:nom]   # => Boris

# Ajout d'un nouveau champ
données_utilisateur[:emploi] = "Développeur"

# Modification de la valeur
données_utilisateur[:âge] = 46

# Suppression d'un champ
données_utilisateur.delete(:ville)

# Itération sur le hash
données_utilisateur.each do |clé, valeur|
  puts "#{clé}: #{valeur}"
end