English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Hash (Hash) é um conjunto de pares de chave e valor como "key" => "value". O Hash é semelhante a um array, mas seu índice não está limitado ao uso de números.
O índice do Hash (ou chamado de "chave") pode ser quase qualquer objeto.
虽然 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 Converta value 给定的值与 key 关联给定的键。 |
4 | hash.clear remove todos os pares de chave-valor do hash. |
5 | hash.default(key = nil) Retorna hash o valor padrão, se não for configurado através de default=, retorna nil. (Se a chave estiver hash não existe, então [] retorna um valor padrão.) |
6 | hash.default = obj para hash definir valor padrão. |
7 | hash.default_proc se hash se foi criado com bloco, retorna o bloco. |
8 | hash.delete(key) [ou] array.delete(key) { |key| bloco } através de key de hash remove o par de chave-valor. Se usou bloco e não encontrou par de chave-valor correspondente, retorna o resultado do bloco. Compare-o com delete_if para comparar. |
9 | hash.delete_if { |key, value| bloco } bloco é true de cada bloco, a partir de hash e remove o par de chave-valor. |
10 | hash.each { |key, value| bloco } percorre hashpara cada key chama o bloco uma vez, passando o key-value como um array de dois elementos. |
11 | hash.each_key { |key| bloco } percorre hashpara cada key chama o bloco uma vez, passando key como parâmetro. |
12 | hash.each_key { |key_value_array| bloco } percorre hashpara cada key chama o bloco uma vez, passando key e value como parâmetro. |
13 | hash.each_value { |value| bloco } percorre hashpara cada key chama o bloco uma vez, passando value como parâmetro. |
14 | hash.empty? verifica se o hash está vazio (não contém pares de chave-valor), retorna true ou false. |
15 | hash.fetch(key [, padrão] ) [ou] hash.fetch(key) { |key| bloco } através do valor fornecido key de hash o valor retornado. Se não encontrar keye não foram fornecidos outros parâmetros, lança IndexError exceção; se for fornecido padrãoentão retorna padrãoSe foi especificado um bloco opcional, retorna o resultado do bloco. |
16 | hash.has_key?(key) [ou] hash.include?(key) [ou] hash.key?(key) [ou] hash.member?(key) verifica o valor fornecido key se ele existe no hash, retorna true ou false. |
17 | hash.has_value?(value) verifica se o hash contém o valor fornecido value. |
18 | hash.index(value) para o valor fornecido value retorna o valor do hash keySe não encontrar o valor correspondente, retorna nil. |
19 | hash.indexes(keys) retornar um novo array composto pelos valores das chaves fornecidas. Se a chave não for encontrada, será inserido o valor padrão. Este método foi descontinuado, use select. |
20 | hash.indices(keys) retornar um novo array composto pelos valores das chaves fornecidas. Se a chave não for encontrada, será inserido o valor padrão. Este método foi descontinuado, use select. |
21 | hash.inspect retornar a versão impressa do hash. |
22 | hash.invert criar um novo hashinverter hash do keys e valuesisto é, no novo hash,hash as chaves do hash se tornarão os valores e os valores se tornarão as chaves. |
23 | hash.keys criar um novo array com hash das chaves. |
24 | hash.length retornar em forma inteira hash o tamanho ou comprimento. |
25 | hash.merge(other_hash) [ou] hash.merge(other_hash) { |key, oldval, newval| block } Retorna um novo hash contendo hash e other_hash o conteúdo, sobrescrever o hash com other_hash Par de chave-valor com chave repetida. |
26 | hash.merge!(other_hash) [ou] hash.merge!(other_hash) { |key, oldval, newval| block } igual a merge, mas na verdade o hash muda. |
27 | hash.rehash baseado em cada key o valor atual hashSe o valor mudar após a inserção, o método reindexará hash. |
28 | hash.reject { |key, value| block } semelhante a delete_if, mas atua em uma cópia do hash. Igual a hsh.dup.delete_if. |
29 | hash.reject! { |key, value| block } igual a delete_if, mas se não houver modificação, retorna nil. |
30 | hash.replace(other_hash) Converta hash o conteúdo substituído por other_hash do conteúdo. |
31 | hash.select { |key, value| block } retornar um novo array composto por block Retorna true do hash constituído por pares de chave-valor. |
32 | hash.shift de hash remover um par de chave-valor do hash e retornar como um array de dois elementos. |
33 | hash.size retornar em forma inteira hash do size ou length. |
34 | hash.sort Converta hash transformar em um array bidimensional contendo pares de chave-valor e depois classificar. |
35 | hash.store(key, value) armazenar hash um par de chave-valor. |
36 | hash.to_a Criar um array bidimensional a partir do hash. Cada par de chave-valor é transformado em um array e todos esses arrays são armazenados em um array. |
37 | hash.to_hash Retorna hash(self). |
38 | hash.to_s Converta hash Converta em um array, então converta o array em uma string. |
39 | hash.update(other_hash) [ou] hash.update(other_hash) {|key, oldval, newval| block} Retorna um novo hash contendo hash e other_hash o conteúdo, rewrite hash com other_hash Par de chave-valor com chave repetida. |
40 | hash.value?(value) Verificação hash Se contém o valor fornecido value. |
41 | hash.values Retorna um novo array contendo hash todas as valores. |
42 | hash.values_at(obj, ...) Retorna um novo array contendo hash O valor relacionado ao chave fornecida. |