Hachage rubis
Le hachage est une collection de paires clé-valeur comme "key" => "value". Un hachage est similaire à un tableau, sauf que son indexation ne se limite pas à l'utilisation de nombres.
L'index (ou "clé") d'un Hash peut être presque n'importe quel objet.
Bien que Hash soit similaire au tableau, il présente une différence importante : les éléments de Hash n'ont pas d'ordre spécifique. Si l'ordre est important, utilisez un tableau.
Créer un hachage
Comme pour les tableaux, il existe différentes manières de créer un hachage. Vous pouvez créer un hachage vide via la méthode de classe new :
months = Hash.new
Vous pouvez également créer un hachage avec et sans défaut en utilisant new Le hachage est nil :
months = Hash.new( "month" ) 或 months = Hash.new "month"
Lorsque vous accédez à une clé d'un hachage avec une valeur par défaut, l'accès au hachage renverra la valeur par défaut si la clé ou la valeur n'existe pas :
#!/usr/bin/ruby months = Hash.new( "month" ) puts "#{months[0]}" puts "#{months[72]}"
Le résultat de sortie de l'instance ci-dessus est :
month month
#!/usr/bin/ruby H = Hash["a" => 100, "b" => 200] puts "#{H['a']}" puts "#{H['b']}"
Le résultat de sortie de l'instance ci-dessus est :
100 200
Vous pouvez utilisez n'importe quel objet Ruby comme clé ou valeur, ou même comme tableau, comme indiqué dans l'exemple suivant :
[1,"jan"] => "January"
Méthode intégrée Hash
Si vous devez appeler la méthode Hash, vous vous devez d'abord instancier un objet Hash. Voici comment créer une instance d'un objet Hash :
Hash[[key =>|, value]* ] or Hash.new [or] Hash.new(obj) [or] Hash.new { |hash, key| block }
Cela renverra un nouveau hachage rempli avec l'objet donné. Maintenant, en utilisant l'objet créé, nous pouvons appeler n'importe laquelle des méthodes disponibles. Par exemple :
#!/usr/bin/ruby $, = ", " months = Hash.new( "month" ) months = {"1" => "January", "2" => "February"} keys = months.keys puts "#{keys}"
Le résultat de sortie de l'exemple ci-dessus est :
["1", "2"]
Ce qui suit est une méthode de hachage publique (en supposant que hash est un objet Hash) :
Numéro de série | Méthode et description |
---|---|
1 | hash == other_hash Vérifiez si deux hachages ont le même nombre de paires clé-valeur et si les paires clé-valeur correspondent pour déterminer si les deux hachages sont égaux. |
2 | hash.[key] Utilisez une clé pour référencer une valeur à partir d'un hachage. Si la clé n'est pas trouvée, la valeur par défaut est renvoyée. |
3 | hash.[key]=value Mettez la valeur donnée par value et key La clé donnée est associée. |
4 | hash.clear Supprime toutes les paires clé-valeur du hachage. |
5 | hash.default(key = nil) Renvoie la valeur par défaut de hash sinon S’il est défini via default=, nul sera renvoyé. (Si la clé n'existe pas dans hash, [] renvoie une valeur par défaut.) |
6 | hash.default = obj définit la valeur par défaut pour hash. |
7 | hash.default_proc Si hash a été créé via un bloc, renvoie le bloc. |
8 | hash.delete(key) [ou] array.delete(key) { |key| block } Supprimez les paires clé-valeur du hash via key. Si un bloc est utilisé et qu'aucune paire clé-valeur correspondante n'est trouvée, le résultat du bloc est renvoyé. Comparez cela à delete_if. |
9 | hash.delete_if { |key,value| block } est le bloc avec true Chaque bloc, supprimez les paires clé-valeur du hash. |
10 | hash.each { |key,value| block } Traverse hash pour chacun key appelle le bloc une fois, en transmettant la valeur-clé sous forme d'un tableau à deux éléments. |
11 | hash.each_key { |key| block } Traverse hash pour chaque key appelle le bloc une fois, en passant key comme paramètre. |
12 | hash.each_key { |key_value_array| bloc } Traverse hash pour chaque key appelle le bloc une fois, en passant key et value comme paramètres. |
13 | hash.each_value { |value| block } Traverse hash pour chaque key appelle le bloc une fois, en passant value comme paramètre. |
14 | hash.empty? Vérifiez si le hachage est vide (ne contient pas de paires clé-valeur) et renvoie vrai ou faux. |
15 | hash.fetch(clé [, par défaut] ) [ou] hash.fetch(clé) { | bloc clé } Renvoie la valeur du hash étant donné la clé donnée. Si key n'est pas trouvé et qu'aucun autre paramètre n'est fourni, l'exception IndexError est levée ; si default est donné, default est renvoyé ; ;Si le bloc facultatif est spécifié, le résultat du bloc est renvoyé. |
16 | hash.has_key?(clé) [ou] hash.include?(clé) [ou] hash.key?( key) [ou] hash.member?(key) Vérifie si la clé donnée existe dans le hachage, renvoie true ou false . |
17 | hash.has_value?(value) Vérifie si le hachage contient la valeur donnée. |
18 | hash.index(value) renvoie le hachage dans la valeur donnée key, ou nil si aucune valeur correspondante n'est trouvée. |
19 | hash.indexes(keys) Renvoie un nouveau tableau composé des valeurs des clés données. Les clés introuvables auront des valeurs par défaut insérées. Cette méthode est obsolète, veuillez utiliser select. |
20 | hash.indices(keys) Renvoie un nouveau tableau composé des valeurs des clés données. Les clés introuvables auront des valeurs par défaut insérées. Cette méthode est obsolète, veuillez utiliser select. |
21 | hash.inspect Renvoie la version chaîne imprimée du hachage. |
22 | hash.invert Crée un nouveau hash, en inversant le hash clés et valeurs dans . Autrement dit, dans le nouveau hachage, les clés de hash deviendront des valeurs et les valeurs deviendront des clés. |
23 | hash.keys Crée un nouveau tableau avec les clés dans hash. /td> |
24 | hash.length Renvoie la taille ou la longueur du hash sous forme entière . |
25 | hash.merge(other_hash) [ou] hash.merge(other_hash) { |key, oldval, newval| block } renvoie un nouveau hachage contenant le contenu de hash et de other_hash, en réécrivant les clés avec des clés en double dans la paire de valeurs de hachage et de other_hash. |
26 | hash.merge!(other_hash) [ou] hash.merge!(other_hash) { |key, oldval, newval| block } équivaut à merge, mais en fait le hachage a changé. |
27 | hash.rehash Reconstruit le hachage en fonction de la valeur actuelle de chaque clé . Si la valeur change après l'insertion, cette méthode réindexera le hash. |
28 | hash.reject { |key, value| block } est block est true crée un nouveau hash pour chaque paire clé-valeur. |
29 | hash.reject ! { |key, value| block } est identique à reject, Mais en fait le hachage a changé. |
30 | hash.replace(other_hash) Remplacez le contenu de hash par le contenu de other_hash. |
31 | hash.select { |key, value| block } Renvoie un nouveau tableau, représenté par block Renvoie les paires clé-valeur dans le hash de true. |
32 | hash.shift Supprime une paire clé-valeur de hash et décale la clé- les paires de valeurs sont renvoyées sous forme de tableau à deux éléments. |
33 | hash.size renvoie la taille du hash en entier forme ou longueur. |
34 | hash.sort Convertit le hash en un tableau bidimensionnel contenant des paires clé-valeur tableau, puis triez-le. |
35 | hash.store(key, value) stocke une paire clé-valeur dans hash . |
36 | hash.to_a Créez un tableau bidimensionnel à partir de hachage. Chaque paire clé-valeur est convertie en tableau et tous ces tableaux sont stockés dans un tableau. |
37 | hash.to_hash renvoie hash(soi). |
38 | hash.to_s Convertir hash en un tableau, puis convertir le tableau en un chaîne. |
39 | hash.update(other_hash) [ou] hash.update(other_hash) {|key, oldval, newval| block} renvoie un nouveau hachage contenant le contenu de hash et de other_hash, en réécrivant hash avec other_hash paires clé-valeur avec des clés en double. |
40 | hash.value?(value) Vérifiez si hash contient le donné valeur. |
41 | hash.values Renvoie un nouveau tableau contenant toutes les valeurs de hash. |
42 | hash.values_at(obj, ...) Renvoie un nouveau tableau contenant hash< La valeur en 🎜> associé à la clé donnée. |