English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 对象):
序号 | 方法 & 描述 |
---|---|
1 | hash == other_hash 检查两个哈希是否具有相同的键值对个数,键值对是否相互匹配,以判断两个哈希是否相等。 |
2 | hash[key] 使用键从哈希引用值。如果未找到键,则返回默认值。 |
3 | hash[key]=value Converts value 给定的值与 key 关联给定的键。 |
4 | hash.clear supprime toutes les paires clé-valeur du hash. |
5 | hash.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.) |
6 | hash.default = obj pour hash défini la valeur par défaut. |
7 | hash.default_proc si hash retourne le bloc si le hash a été créé par bloc. |
8 | hash.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. |
9 | hash.delete_if { |key,value| block } le bloc est true de chaque bloc, à partir de hash supprime les paires clé-valeur. |
10 | hash.each { |key,value| block } parcourir hashpour chaque key appelle une fois le bloc, en transmettant-la valeur en tant que tableau à deux éléments. |
11 | hash.each_key { |key| block } parcourir hashpour chaque key appelle une fois le bloc, en transmettant key comme paramètre. |
12 | hash.each_key { |key_value_array| block } parcourir hashpour chaque key appelle une fois le bloc, en transmettant key and value comme paramètre. |
13 | hash.each_value { |value| block } parcourir hashpour chaque key appelle une fois le bloc, en transmettant value comme paramètre. |
14 | hash.empty? vérifie si le hash est vide (ne contient pas de paires clé-valeur), retourne true ou false. |
15 | hash.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. |
16 | hash.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. |
17 | hash.has_value?(value) vérifie si le hash contient la valeur donnée value. |
18 | hash.index(value) pour la valeur donnée value retourne les valeurs du hash keysi la valeur correspondante n'est pas trouvée, retourne nil. |
19 | hash.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. |
20 | hash.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. |
21 | hash.inspect retourner la version imprimée de l'hash. |
22 | hash.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. |
23 | hash.keys créer un nouveau tableau avec hash des clés. |
24 | hash.length retourner sous forme d'entier hash la taille ou la longueur. |
25 | hash.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. |
26 | hash.merge!(other_hash) [ou] hash.merge!(other_hash) { |key, oldval, newval| block } est le même que merge, mais l'hash change réellement. |
27 | hash.rehash basé sur chaque key la valeur actuelle hash. Si la valeur a changé après l'insertion, cette méthode reconstitue hash. |
28 | hash.reject { |key, value| block } similaire à delete_if, mais agit sur une copie de l'hash. Équivaut à hsh.dup.delete_if. |
29 | hash.reject! { |key, value| block } équivaut à delete_if, mais renvoie nil si aucune modification n'est apportée. |
30 | hash.replace(other_hash) Converts hash le contenu remplacer par other_hash du contenu. |
31 | hash.select { |key, value| block } retourner un nouveau tableau composé de block Returns true de hash constituée de paires clé-valeur. |
32 | hash.shift de hash supprimer une paire clé-valeur de hash, et renvoyer cette paire sous forme de tableau à deux éléments. |
33 | hash.size retourner sous forme d'entier hash de size ou length. |
34 | hash.sort Converts hash transformer en un tableau à deux dimensions contenant des paires clé-valeur, puis le trier. |
35 | hash.store(key, value) stocker hash d'une paire clé-valeur. |
36 | hash.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. |
37 | hash.to_hash Returns hash(self). |
38 | hash.to_s Converts hash Converts it to an array and then converts that array to a string. |
39 | hash.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. |
40 | hash.value?(value) Check hash Whether it contains the given value. |
41 | hash.values Returns a new array containing hash of all values. |
42 | hash.values_at(obj, ...) Returns a new array containing hash The value associated with the given key. |