Matrizes não são a única maneira de gerenciar coleções de variáveis em Rubi. Outro tipo de coleção de variáveis é o cerquilha, também chamado de matriz associativa. Um hash é como uma matriz, pois é uma variável que armazena outras variáveis. No entanto, um hash é diferente de uma matriz, pois as variáveis armazenadas não são armazenadas em nenhuma ordem específica e são recuperadas com uma chave em vez de por sua posição na coleção.
Criar um hash com pares de chave / valor
Um hash é útil para armazenar o que é chamado pares chave / valor. Um par de chave / valor possui um identificador para indicar qual variável do hash você deseja acessar e uma variável para armazenar nessa posição no hash. Por exemplo, um professor pode armazenar as notas de um aluno em um hash. A nota de Bob seria acessada em um hash pela tecla "Bob" e a variável armazenada nesse local seria a nota de Bob.
Uma variável de hash pode ser criada da mesma maneira que uma variável de matriz. O método mais simples é criar um objeto hash vazio e preenchê-lo com pares de chave / valor. Observe que o operador de índice é usado, mas o nome do aluno é usado em vez de um número.
Lembre-se de que os hashes não são ordenados, o que significa que não há começo nem fim definidos, como existe em uma matriz. Portanto, você não pode anexar a um hash. Os valores são simplesmente inseridos no hash usando o operador de índice.
#! / usr / bin / env ruby
grade = Hash.new
notas ["Bob"] = 82
notas ["Jim"] = 94
notas ["Billy"] = 58
coloca notas ["Jim"]
Literais Hash
Assim como matrizes, os hashes podem ser criados com hash literais. Literais de hash usam colchetes em vez de colchetes e os pares de valores-chave são unidos por =>. Por exemplo, um hash com um único par de chave / valor de Bob / 84 ficaria assim: {"Bob" => 84}. Pares de chave / valor adicionais podem ser adicionados ao literal de hash, separando-os com vírgulas. No exemplo a seguir, um hash é criado com as notas para vários alunos.
#! / usr / bin / env ruby
notas = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
coloca notas ["Jim"]
Acessando variáveis no Hash
Pode haver momentos em que você deve acessar cada variável no hash. Você ainda pode fazer um loop sobre as variáveis no hash usando o cada loop, embora não funcione da mesma maneira que o uso do cada loop com variáveis de matriz. Como um hash não é ordenado, a ordem em que cada O loop dos pares chave / valor pode não ser o mesmo da ordem em que você os inseriu. Neste exemplo, um hash de notas será repetido e impresso.
#! / usr / bin / env ruby
notas = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
grade.each do | nome, série |
coloca "# {name}: # {grade}"
fim