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