Ruby - Hashs

Un Hash est une collection de paires clé-valeur comme celle-ci: "employé" => "salaire". Il est similaire à un tableau, sauf que l'indexation se fait via des clés arbitraires de n'importe quel type d'objet, pas un index entier.

L'ordre dans lequel vous parcourez un hachage par clé ou valeur peut sembler arbitraire et ne sera généralement pas dans l'ordre d'insertion. Si vous essayez d'accéder à un hachage avec une clé qui n'existe pas, la méthode renverra nil .

Créer des hachages

Comme pour les tableaux, il existe plusieurs façons de créer des hachages. Vous pouvez créer un hachage vide avec la nouvelle méthode de classe -

months = Hash.new

Vous pouvez également utiliser new pour créer un hachage avec une valeur par défaut, qui est sinon simplement nulle -

months = Hash.new( "month" )

or

months = Hash.new "month"

Lorsque vous accédez à une clé dans un hachage qui a une valeur par défaut, si la clé ou la valeur n'existe pas, l'accès au hachage renverra la valeur par défaut -

#!/usr/bin/ruby

months = Hash.new( "month" )

puts "#{months[0]}"
puts "#{months[72]}"

Cela produira le résultat suivant -

month
month

#!/usr/bin/ruby

H = Hash["a" => 100, "b" => 200]

puts "#{H['a']}"
puts "#{H['b']}"

Cela produira le résultat suivant -

100
200

Vous pouvez utiliser n'importe quel objet Ruby comme clé ou valeur, même un tableau, donc l'exemple suivant est valide -

[1,"jan"] => "January"

Méthodes intégrées de hachage

Nous avons besoin d'une instance d'objet Hash pour appeler une méthode Hash. Comme nous l'avons vu, voici la façon de créer une instance d'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 les objets donnés. Maintenant, en utilisant l'objet créé, nous pouvons appeler toutes les méthodes d'instance disponibles. Par exemple -

#!/usr/bin/ruby

$, = ", "
months = Hash.new( "month" )
months = {"1" => "January", "2" => "February"}

keys = months.keys
puts "#{keys}"

Cela produira le résultat suivant -

["1", "2"]

Voici les méthodes de hachage publiques (en supposant que le hachage est un objet tableau) -

N ° Sr. Méthodes et description
1

hash == other_hash

Teste si deux hachages sont égaux, selon qu'ils ont le même nombre de paires clé-valeur et si les paires clé-valeur correspondent à la paire correspondante dans chaque hachage.

2

hash.[key]

À l'aide d'une clé, fait référence à une valeur de hachage. Si la clé n'est pas trouvée, renvoie une valeur par défaut.

3

hash.[key] = value

Associe la valeur donnée par valeur à la clé donnée par clé .

4

hash.clear

Supprime toutes les paires clé-valeur du hachage.

5

hash.default(key = nil)

Renvoie la valeur par défaut du hachage , nil si elle n'est pas définie par défaut =. ([] renvoie une valeur par défaut si la clé n'existe pas dans le hachage .)

6

hash.default = obj

Définit une valeur par défaut pour le hachage .

sept

hash.default_proc

Renvoie un bloc si le hachage a été créé par un bloc.

8

hash.delete(key) [or]

array.delete(key) { |key| block }

Supprime une paire clé-valeur du hachage par clé . Si un bloc est utilisé, renvoie le résultat d'un bloc si la paire n'est pas trouvée. Comparez delete_if .

9

hash.delete_if { |key,value| block }

Supprime une paire clé-valeur du hachage pour chaque paire que le bloc évalue à vrai .

dix

hash.each { |key,value| block }

Itère sur hachage , appelant le bloc une fois pour chaque clé, passant la valeur-clé sous forme de tableau à deux éléments.

11

hash.each_key { |key| block }

Itère sur le hachage , appelant le bloc une fois pour chaque clé, passant la clé en tant que paramètre.

12

hash.each_key { |key_value_array| block }

Itère sur hachage , appelant le bloc une fois pour chaque clé , passant la clé et la valeur en tant que paramètres.

13

hash.each_key { |value| block }

Itère sur le hachage , appelant le bloc une fois pour chaque clé , passant la valeur en tant que paramètre.

14

hash.empty?

Teste si le hachage est vide (ne contient aucune paire clé-valeur), en retournant vrai ou faux .

15

hash.fetch(key [, default] ) [or]

hash.fetch(key) { | key | block }

Renvoie une valeur de hachage pour la clé donnée . Si la clé est introuvable et qu'il n'y a pas d'autres arguments, cela déclenche une exception IndexError ; si la valeur par défaut est donnée, elle est renvoyée; si le bloc facultatif est spécifié, son résultat est renvoyé.

16

hash.has_key?(key) [or] hash.include?(key) [or]

hash.key?(key) [or] hash.member?(key)

Teste si une clé donnée est présente dans le hachage, retournant vrai ou faux .

17

hash.has_value?(value)

Teste si le hachage contient la valeur donnée .

18

hash.index(value)

Renvoie la clé de la valeur donnée dans le hachage, nil si aucune valeur correspondante n'est trouvée.

19

hash.indexes(keys)

Renvoie un nouveau tableau composé de valeurs pour la ou les clés données. Insérera la valeur par défaut pour les clés qui ne sont pas trouvées. Cette méthode est obsolète. Utilisez select.

20

hash.indices(keys)

Renvoie un nouveau tableau composé de valeurs pour la ou les clés données. Insérera la valeur par défaut pour les clés qui ne sont pas trouvées. Cette méthode est obsolète. Utilisez select.

21

hash.inspect

Renvoie une jolie version de chaîne d'impression de hash.

22

hash.invert

Crée un nouveau hachage , inversant les clés et les valeurs du hachage ; autrement dit, dans le nouveau hachage, les clés du hachage deviennent des valeurs et les valeurs deviennent des clés.

23

hash.keys

Crée un nouveau tableau avec des clés de hachage .

24

hash.length

Renvoie la taille ou la longueur du hachage sous forme d'entier.

25

hash.merge(other_hash) [or]

hash.merge(other_hash) { |key, oldval, newval| block }

Renvoie un nouveau hachage contenant le contenu de hash et other_hash , en écrasant les paires de hash avec des clés en double avec celles de other_hash .

26

hash.merge!(other_hash) [or]

hash.merge!(other_hash) { |key, oldval, newval| block }

Identique à la fusion, mais les modifications sont effectuées sur place.

27

hash.rehash

Reconstruit le hachage en fonction des valeurs actuelles de chaque clé . Si les valeurs ont changé depuis leur insertion, cette méthode réindexe le hachage .

28

hash.reject { |key, value| block }

Crée un nouveau hachage pour chaque paire que le bloc évalue à vrai

29

hash.reject! { |key, value| block }

Identique au rejet , mais les modifications sont apportées.

30

hash.replace(other_hash)

Remplace le contenu de hash par le contenu de other_hash .

31

hash.select { |key, value| block }

Renvoie un nouveau tableau composé de paires clé-valeur à partir du hachage pour lequel le bloc renvoie true .

32

hash.shift

Supprime une paire clé-valeur du hachage , la renvoyant sous la forme d'un tableau à deux éléments.

33

hash.size

Renvoie la taille ou la longueur du hachage sous forme d'entier.

34

hash.sort

Convertit le hachage en un tableau à deux dimensions contenant des tableaux de paires clé-valeur, puis le trie sous forme de tableau.

35

hash.store(key, value)

Stocke une paire clé-valeur dans le hachage .

36

hash.to_a

Crée un tableau à deux dimensions à partir de hachage. Chaque paire clé / valeur est convertie en un tableau et tous ces tableaux sont stockés dans un tableau contenant.

37

hash.to_hash

Renvoie hash (self).

38

hash.to_s

Convertit le hachage en tableau, puis convertit ce tableau en chaîne.

39

hash.update(other_hash) [or]

hash.update(other_hash) {|key, oldval, newval| block}

Renvoie un nouveau hachage contenant le contenu de hash et other_hash , en écrasant les paires de hash avec des clés en double avec celles de other_hash .

40

hash.value?(value)

Teste si le hachage contient la valeur donnée .

41

hash.values

Renvoie un nouveau tableau contenant toutes les valeurs de hachage .

42

hash.values_at(obj, ...)

Renvoie un nouveau tableau contenant les valeurs de hachage associées à la ou aux clés données.