English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby Hashes (Hash)

L'hash (Hash) est une collection de paires clé-valeur comme "clé" => "valeur". L'hash est similaire à un tableau, mais son index n'est pas limité à l'utilisation de nombres.

L'index de l'hash (ou appelé "clé") peut presque être n'importe quel objet.

Hash 虽然和数组类似,但却有一个很重要的区别:Hash 的元素没有特定的顺序。如果顺序很重要的话就要使用数组了。

创建哈希

与数组一样,有各种不同的方式来创建哈希。您可以通过 new 类方法创建一个空的哈希:

months = Hash.new

您也可以使用 new 创建带有默认值的哈希,不带默认值的哈希是 nil

months = Hash.new("month")
 
ou
 
months = Hash.new "month"

当您访问带有默认值的哈希中的任意键时,如果键或值不存在,访问哈希将返回默认值:

在线示例

#!/usr/bin/ruby
 
months = Hash.new("month")
 
puts "#{months[0]}"
puts "#{months[72]")

以上示例运行输出结果为:

month
month

在线示例

#!/usr/bin/ruby
 
H = Hash["a" => 100, "b" => 200]
 
puts "#{H['a']}"
puts "#{H['b']}"

以上示例运行输出结果为:

100
200

您可以使用任何的 Ruby 对象作为键或值,甚至可以使用数组,如下示例所示:

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

哈希内置方法

如果需要调用 Hash 方法,需要先示例化一个 Hash 对象。以下是创建 Hash 对象示例的方式:

Hash[[key =>|, value]* ] or
 
Hash.new [or] Hash.new(obj) [or]
 
Hash.new { |hash, key| block }

这将返回一个使用给定对象进行填充的新的哈希。现在,使用创建的对象,我们可以调用任意可用的方法。例如:

在线示例

#!/usr/bin/ruby
 
$, = ", "
months = Hash.new("month")
 
months = "{"1" => "January", "2" => "February"
 
keys = months.keys
 
puts "#{keys}"

以上示例运行输出结果为:

"["1", "2"]

以下是公共的哈希方法(假设 hash 是一个 Hash 对象):

序号方法 & 描述
1hash == other_hash
检查两个哈希是否具有相同的键值对个数,键值对是否相互匹配,以判断两个哈希是否相等。
2hash[key]
使用键从哈希引用值。如果未找到键,则返回默认值。
3hash[key]=value
Converts value 给定的值与 key 关联给定的键。
4hash.clear
supprime toutes les paires clé-valeur du hash.
5hash.default(key = nil)
Returns hash la valeur par défaut, si elle n'est pas définie via default=, retourne nil. (Si la clé est hash n'existe pas, alors [] retourne une valeur par défaut.)
6hash.default = obj
pour hash défini la valeur par défaut.
7hash.default_proc
si hash retourne le bloc si le hash a été créé par bloc.
8hash.delete(key) [ou]
array.delete(key) { |key| block }

par key de hash supprime les paires clé-valeur. Si un bloc est utilisé et que la paire clé-valeur correspondante n'est pas trouvée, retourne le résultat du bloc. Comparez-le avec delete_if comparaison.
9hash.delete_if { |key,value| block }
le bloc est true de chaque bloc, à partir de hash supprime les paires clé-valeur.
10hash.each { |key,value| block }
parcourir hashpour chaque key appelle une fois le bloc, en transmettant-la valeur en tant que tableau à deux éléments.
11hash.each_key { |key| block }
parcourir hashpour chaque key appelle une fois le bloc, en transmettant key comme paramètre.
12hash.each_key { |key_value_array| block }
parcourir hashpour chaque key appelle une fois le bloc, en transmettant key and value comme paramètre.
13hash.each_value { |value| block }
parcourir hashpour chaque key appelle une fois le bloc, en transmettant value comme paramètre.
14hash.empty?
vérifie si le hash est vide (ne contient pas de paires clé-valeur), retourne true ou false.
15hash.fetch(key [, default] ) [ou]
hash.fetch(key) { |key| block }

par le biais du bloc donné key de hash valeur de retour. Si la valeur n'est pas trouvée keyet qu'aucun autre paramètre n'est fourni, lève une IndexError exception ; si une valeur est fournie defaultalors retourne defaultsi un bloc optionnel est spécifié, retourne le résultat du bloc.
16hash.has_key?(key) [ou] hash.include?(key) [ou]
hash.key?(key) [ou] hash.member?(key)

vérifie la valeur donnée key si elle existe dans le hash, retourne true ou false.
17hash.has_value?(value)
vérifie si le hash contient la valeur donnée value.
18hash.index(value)
pour la valeur donnée value retourne les valeurs du hash keysi la valeur correspondante n'est pas trouvée, retourne nil.
19hash.indexes(keys)
retourner un nouveau tableau composé des valeurs associées aux clés fournies. Les clés introuvables insèrent la valeur par défaut. Cette méthode est obsolète, utiliser select à la place.
20hash.indices(keys)
retourner un nouveau tableau composé des valeurs associées aux clés fournies. Les clés introuvables insèrent la valeur par défaut. Cette méthode est obsolète, utiliser select à la place.
21hash.inspect
retourner la version imprimée de l'hash.
22hash.invert
créer un nouveau hashinverser hash les keys and valuesc'est-à-dire, dans le nouveau hash,hash les clés deviendront les valeurs, et les valeurs deviendront les clés.
23hash.keys
créer un nouveau tableau avec hash des clés.
24hash.length
retourner sous forme d'entier hash la taille ou la longueur.
25hash.merge(other_hash) [ou]
hash.merge(other_hash) { |key, oldval, newval| block }

Returns a new hash containing hash and other_hash le contenu, écraser hash avec other_hash Key-value pairs with duplicate keys.
26hash.merge!(other_hash) [ou]
hash.merge!(other_hash) { |key, oldval, newval| block }

est le même que merge, mais l'hash change réellement.
27hash.rehash
basé sur chaque key la valeur actuelle hash. Si la valeur a changé après l'insertion, cette méthode reconstitue hash.
28hash.reject { |key, value| block }
similaire à delete_if, mais agit sur une copie de l'hash. Équivaut à hsh.dup.delete_if.
29hash.reject! { |key, value| block }
équivaut à delete_if, mais renvoie nil si aucune modification n'est apportée.
30hash.replace(other_hash)
Converts hash le contenu remplacer par other_hash du contenu.
31hash.select { |key, value| block }
retourner un nouveau tableau composé de block Returns true de hash constituée de paires clé-valeur.
32hash.shift
de hash supprimer une paire clé-valeur de hash, et renvoyer cette paire sous forme de tableau à deux éléments.
33hash.size
retourner sous forme d'entier hash de size ou length.
34hash.sort
Converts hash transformer en un tableau à deux dimensions contenant des paires clé-valeur, puis le trier.
35hash.store(key, value)
stocker hash d'une paire clé-valeur.
36hash.to_a
Créer un tableau à deux dimensions à partir de hash. Chaque paire clé-valeur est transformée en un tableau, et tous ces tableaux sont stockés dans un tableau.
37hash.to_hash
Returns hash(self).
38hash.to_s
Converts hash Converts it to an array and then converts that array to a string.
39hash.update(other_hash) [or]
hash.update(other_hash) {|key, oldval, newval| block}

Returns a new hash containing hash and other_hash content, rewrite hash with other_hash Key-value pairs with duplicate keys.
40hash.value?(value)
Check hash Whether it contains the given value.
41hash.values
Returns a new array containing hash of all values.
42hash.values_at(obj, ...)
Returns a new array containing hash The value associated with the given key.