Ruby Hash
Un Hash est une collection de paires clé-valeur comme "key" => "value". Les Hash sont similaires aux tableaux, sauf que leurs index ne sont pas limités aux nombres.
Les index de Hash (ou « clés ») peuvent être presque n'importe quel objet.
Bien qu'un Hash soit similaire à un tableau, il y a une différence importante : les éléments de Hash n'ont pas d'ordre spécifique. Si l'ordre est important, vous devriez utiliser un tableau.
Création de Hash
Comme pour les tableaux, il existe différentes façons de créer un hash. Vous pouvez créer un hash vide via la méthode de classenew:
Vous pouvez également utilisernewpour créer un hash avec une valeur par défaut. Un hash sans valeur par défaut estnil:
Lorsque vous accédez à n'importe quelle clé dans un hash avec une valeur par défaut, si la clé ou la valeur n'existe pas, le hash renverra la valeur par défaut :
Exemple
Essayez-le »
La sortie de l'exemple ci-dessus est :
month month
Exemple
Essayez-le »
La sortie de l'exemple ci-dessus est :
100 200
Vous pouvez utiliser n'importe quel objet Ruby comme clé ou valeur, et même utiliser un tableau, comme le montre l'exemple suivant :
Méthodes intégrées de Hash
Pour appeler les méthodes de Hash, vous devez d'abord instancier un objet Hash. Voici les façons de créer une instance d'objet Hash :
Cela renvoie un nouveau hash rempli avec l'objet donné. Maintenant, en utilisant l'objet créé, nous pouvons appeler n'importe quelle méthode disponible. Par exemple :
Exemple
Essayez-le »
La sortie de l'exemple ci-dessus est :
["1", "2"]
Les méthodes de hachage publiques suivantes sont (en supposant quehashhash est un objet Hash) :
| Non. | Metode & Deskripsi |
|---|---|
| 1 | hash == other_hash Vérifie si deux hachages ont le même nombre de paires clé-valeur, et si les paires clé-valeur correspondent entre elles, pour déterminer si les deux hachages sont égaux. |
| 2 | hash[key] Utilise une clé pour référencer une valeur à partir du hachage. Si la clé est introuvable, renvoie la valeur par défaut. |
| 3 | hash[key]=value holdvalueLa valeur donnée est associée à lakeyclé donnée. |
| 4 | hash.clear Supprime toutes les paires clé-valeur du hash. |
| 5 | hash.default(key = nil) Renvoiehashla valeur par défaut de hash, ou nil si elle n'est pas définie via default=. (Si la clé n'est pas présente danshashhash, [] renvoie une valeur par défaut.) |
| 6 | hash.default = obj esthashDéfinit la valeur par défaut. |
| 7 | hash.default_proc Sihashhash a été créé avec un bloc, renvoie le bloc. |
| 8 | hash.delete(key) [ou] array.delete(key) { |key| block } Supprimekeydehashles paires clé-valeur de hash par clé. Si un bloc est utilisé et qu'aucune paire clé-valeur correspondante n'est trouvée, renvoie le résultat du bloc. Comparez-le avecdelete_ifdelete_if. |
| 9 | hash.delete_if { |key,value| block } Pour chaque bloc oùtrues'évalue à true, supprime les paires clé-valeur dehashhash. |
| 10 | hash.each { |key,value| block } Parcourthashhash, pour chaquecléappelle le bloc une fois, en passant la paire clé-valeur sous forme de tableau à deux éléments. |
| 11 | hash.each_key { |key| block } Parcourthashhash, pour chaquecléappelle le bloc une fois, en passant lacléclé comme argument. |
| 12 | hash.each_key { |key_value_array| block } Parcourthashhash, pour chaquecléappelle le bloc une fois, en passant lacléetvaleurvaleur comme argument. |
| 13 | hash.each_value { |value| block } Parcourthashhash, pour chaquecléappelle le bloc une fois, en passant lavaleurclé-valeur comme arguments. |
| 14 | hash.empty? Vérifie si le hash est vide (ne contient aucune paire clé-valeur), renvoietrueoufalse。 |
| 15 | hash.fetch(key [, default] ) [or] hash.fetch(key) { | key | block } Pour lakeydonnée dehashkey, renvoie une valeur. Si aucune clé n'est trouvéekeyet qu'aucun autre argument n'est fourni, lève une exceptionIndexError; sidefaultdefault est fourni, renvoiedefaultdefault ; si un bloc optionnel est spécifié, renvoie le résultat du bloc. |
| 16 | hash.has_key?(key) [ou] hash.include?(key) [ou] hash.key?(key) [ou] hash.member?(key) Vérifie si lakeykey donnée existe dans le hash, renvoietrueoufalse。 |
| 17 | hash.has_value?(value) Vérifie si le hash contient lavalue donnée。 |
| 18 | hash.index(value) Pour la valeur donnéevaluevaleur, retourne la clé dans le hashkey, si aucune valeur correspondante n'est trouvée, retourne nil.nil。 |
| 19 | hash.indexes(keys) Retourne un nouveau tableau composé des valeurs pour les clés données. La valeur par défaut sera insérée pour les clés non trouvées. Cette méthode est obsolète; veuillez utiliser select. |
| 20 | hash.indices(keys) Retourne un nouveau tableau composé des valeurs pour les clés données. La valeur par défaut sera insérée pour les clés non trouvées. Cette méthode est obsolète; veuillez utiliser select. |
| 21 | hash.inspect Retourne une version chaîne imprimable du hash. |
| 22 | hash.invert Crée un nouveauhashhash, inversanthashles clés/valeurs danskeysetvalueshash. C'est-à-dire, dans le nouveau hash,hashles clés dans hash deviendront des valeurs, et les valeurs deviendront des clés. |
| 23 | hash.keys Crée un nouveau tableau contenant les clés danshashhash. |
| 24 | hash.length Renvoie la taille ou la longueur dehashhash sous la forme d'un entier. |
| 25 | hash.merge(other_hash) [ou] hash.merge(other_hash) { |key, oldval, newval| block } Renvoie un nouveau hash contenant le contenu dehashetother_hashhash, en écrasant les paires clé-valeur dans hash qui ont des clés en double avecother_hashother_hash. |
| 26 | hash.merge!(other_hash) [ou] hash.merge!(other_hash) { |key, oldval, newval| block } Identique à merge, mais le hash est réellement modifié. |
| 27 | hash.rehash Reconstruit hash en fonction de la valeur actuelle de chaquekeykey. Si les valeurs changent après l'insertion, cette méthode réindexehashhash.hash。 |
| 28 | hash.reject { |key, value| block } Semblable à delete_if, mais fonctionne sur une copie du hash. Équivalent à hsh.dup.delete_if. |
| 29 | hash.reject! { |key, value| block } Équivalent à delete_if, mais renvoie nil si aucune modification n'est effectuée. |
| 30 | hash.replace(other_hash) contienthashRemplace le contenu deother_hashhash par le contenu de |
| 31 | hash.select { |key, value| block } Renvoie un nouveau tableau constitué deblockles paires clé-valeur danstruedehashhash. |
| 32 | hash.shift dehashSupprime une paire clé-valeur de hash et la renvoie sous forme de tableau à deux éléments. |
| 33 | hash.size Renvoie la taille ou la longueur dehashdesizehash sous forme d'entier. |
| 34 | hash.sort holdhashConvertit en un tableau à deux dimensions contenant des tableaux de paires clé-valeur, puis le trie. |
| 35 | hash.store(key, value) Stockehashune paire clé-valeur dans hash. |
| 36 | hash.to_a Crée un tableau à deux dimensions à partir de hash. Chaque paire clé-valeur est convertie en un tableau, et tous ces tableaux sont stockés dans un seul tableau. |
| 37 | hash.to_hash Renvoiehash(self)。 |
| 38 | hash.to_s holdhashhash converti en un tableau, puis ce tableau converti en une chaîne. |
| 39 | hash.update(other_hash) [ou] hash.update(other_hash) {|key, oldval, newval| block} Renvoie un nouveau hash contenant le contenu dehashetother_hashhash, écrasanthashles paires clé-valeur dans hash qui ont des clés en double avecother_hashother_hash. |
| 40 | hash.value?(value) Vérifie sihashhash contient lavaleur donnée。 |
| 41 | hash.values Renvoie un nouveau tableau contenant toutes les valeurs dehashhash. |
| 42 | hash.values_at(obj, ...) Renvoie un nouveau tableau contenant les valeurs dehashhash associées aux clés données. |