Rubi de hash (hash)
Hash (Hash) é semelhante ao "chave" => "valor" de uma tal coleção de pares chave-valor. Semelhante a uma matriz de mistura, mas não é limitado ao uso de números de índice.
índice hash (ou "chave") pode ser quase qualquer objeto.
array desordenado Apesar de ser semelhante, mas há uma distinção muito importante: Elementos hash em nenhuma ordem particular. Se a ordem é importante, então você deve usar a matriz.
Criando um hash
Como uma matriz, uma variedade de maneiras diferentes para criar um hash. Você pode criar um hash vazio através denovométodo de classe:
months = Hash.new
Você também pode usar onovohash é criado com valores padrão, sem valor de hash padrão énulo:
months = Hash.new( "month" ) 或 months = Hash.new "month"
Quando você acessa um hash com valores padrão em qualquer tecla, se a chave ou valor não existir, retorna ao valor de hash padrão de acesso:
#!/usr/bin/ruby months = Hash.new( "month" ) puts "#{months[0]}" puts "#{months[72]}"
Execute o exemplo acima saída é:
month month
#!/usr/bin/ruby H = Hash["a" => 100, "b" => 200] puts "#{H['a']}" puts "#{H['b']}"
Execute o exemplo acima saída é:
100 200
Você pode usar qualquer objeto Ruby como uma chave ou valor, pode usar a matriz, como o exemplo dado:
[1,"jan"] => "January"
Hash método incorporado
Se você precisar chamar o método de hash, você precisa instanciar um objeto Hash. Aqui está uma maneira de criar uma instância de Hash objeto:
Hash[[key =>|, value]* ] or Hash.new [or] Hash.new(obj) [or] Hash.new { |hash, key| block }
Isso irá retornar um determinado objeto preenchido com o novo hash. Agora, usando objetos criados, podemos chamar qualquer um dos métodos disponíveis. Por exemplo:
#!/usr/bin/ruby $, = ", " months = Hash.new( "month" ) months = {"1" => "January", "2" => "February"} keys = months.keys puts "#{keys}"
Execute o exemplo acima saída é:
["1", "2"]
A seguir, são o método de hash comum (assumindo um objeto HashHash):
Não. | Method & descrição |
---|---|
1 | hash de == other_hash Verifique se os dois têm o mesmo valor de chave de hash para o número de pares de valores-chave são combinados uns com os outros para determinar se os dois hashes são iguais. |
2 | hash. [key] Usando uma chave valores de referência a partir do hash. Se a chave não for encontrado, em seguida, retornar para os valores padrão. |
3 | hash. [key] = valor Ovalordado o valor dachaveassociada com a chave dada. |
4 | hash.clear Remova todas as chaves do hash. |
5 | hash.default (key = nil) Retorna o valor padrão dehaxixe,se não for definido por padrão =, retorna nil. (Se a chave não existe nohash,então [] retorna um valor padrão.) |
6 | hash.default = obj Definir os valores padrão para ohash. |
7 | hash.default_proc Se ohashcriado por o bloco, o bloco devolvido. |
8 | hash.delete (key) [ou] array.delete (key) {| chave | block} Retire do chave dehashpor par dechaves.Se o bloco e não encontrar uma correspondência pares chave-valor, os resultados do bloco é retornado. Compará-lo comdelete_if. |
9 | hash.delete_if {| chave, valor | bloco } Éverdadepara cada bloco do bloco, elimine a chavedo hash. |
10 | hash.each {| chave, valor | bloco } Traverse ohash,chamado uma vez para cada blocochave,passar de valores-chave como uma matriz de dois elementos. |
11 | hash.each_key {| chave | block} Traverse ohash,chamado uma vez para cada bloco dechave,chave-mestra como um parâmetro. |
12 | hash.each_key {| key_value_array | block} Traverse ohash,chamado uma vez para cada bloco dechave,chave-mestra evalorcomo argumentos. |
13 | hash.each_value {| Valor | block} Traverse ohash,chamado uma vez para cada blocochave,passado como umvalor de parâmetro. |
14 | hash.empty? Verifique se o hash está vazio (não contém os pares chave-valor), e retornaverdadeirooufalso. |
15 | hash.fetch (tecla [, padrão]) [ou] hash.fetch (key) {| chave | block} O valor de retorno a partir dohashatravés de uma determinadachave.Se você não encontrar achave,e não fornecer parâmetros adicionais, jogar exceçãoIndexError;se dadopadrão,retornadefault,se o bloco opcional, resultado bloco é retornado. |
16 | hash.has_key? (key) [ou] hash.include? (key) [ou] hash.key? (key) [ou] hash.member? (key) Verifique se existe achavedada no hash, retornaverdadeirooufalso. |
17 | hash.has_value? (valor) Verifique se o hash contém ovalor dado. |
18 | hash.index (valor) Retornos para um dadovalordachavedehash, osretornos se nenhuma correspondência é encontradanulo. |
19 | hash.indexes (teclas) Ele retorna uma nova matriz pelo valor de um determinado componentes-chave. Não é possível encontrar a chave para inserir o valor padrão. Este método foi preterido, por favor use o select. |
20 | hash.indices (teclas) Ele retorna uma nova matriz pelo valor de um determinado componentes-chave. Não é possível encontrar a chave para inserir o valor padrão. Este método foi preterido, por favor use o select. |
21 | hash.inspect Voltar Imprimir hash de seqüência de versão. |
22 | hash.invert Criar uma nova inversãode hash,hashchavesevalores.Em outras palavras, o novohash,valor de hash torna-se a chave, o valor será chave. |
23 | hash.keys Criar uma nova matriz com a chave dehash./ Td> |
24 | hash.length Ele retorna um tamanhode hashinteiro ou comprimento. |
25 | hash.merge (other_hash) [ou] hash.merge (other_hash) {| chave, OLDVAL, newval | block} Retorna um novo hash,misturacontém conteúdo eother_hashreescreve hash da chave comother_hashcom um par de chave duplicada. |
26 | hash.merge! (other_hash) [ou] hash.merge (other_hash) {| chave , OLDVAL, newval | block} E mesclar o mesmo, mas, na verdade, de hash mudou. |
27 | hash.rehash Restabelecer ohashcom base no valor atual de cadachave.Se você inserir o valor foi alterado, o processo seráde hash re-indexado. |
28 | hash.reject {| chave, valor | bloco } Como é ocasode cadabloco dechave para criar um novohash. |
29 | hash.reject {| chave, valor | block} Erejeitaro mesmo, mas, na verdade, de hash mudou. |
30 | hash.replace (other_hash) Substitua o conteúdo dohashdoother_hash conteúdo. |
31 | hash.select {| chave, valor | bloco } Retorna uma nova matriz, oblocoretornaverdadeirosvalores de chavede hashnos pares. |
32 | hash.shift Retire dohashem um par de chaves e envia o valor de chave retornado como uma matriz de dois elementos. |
33 | hash.size Ele retorna umhashinteiro dotamanhoou comprimento. |
34 | hash.sort Ohashé convertida em uma matriz bidimensional contendo matriz de valores-chave e, em seguida classificadas. |
35 | hash.store (chave, valor) Hasharmazenado em um par de valores-chave. |
36 | hash.to_a Criar uma matriz bidimensional a partir do hash. Cada par de valores-chave em uma matriz, todas essas matrizes são armazenados em uma matriz. |
37 | hash.to_hash Retornosde hash (self). |
38 | hash.to_s Ohashé convertido para uma matriz, a matriz é convertido para uma cadeia. |
39 | hash.update (other_hash) [ou] hash.update (other_hash) {| chave, OLDVAL, newval | block} Retorna um novo hash,misturacontém conteúdo eother_hashreescrevehash dachave comother_hashcom um par de chave duplicada. |
40 | hash.value? (valor) Verifique se ohashcontém ovalor dado. |
41 | hash.values Ele retorna um novo array contendo todos os valores dohash. |
42 | hash.values_at (obj, ...) Ele retorna uma nova matriz que contém o valor dehashassociado com uma determinada chave. |