O que é um Hash?
Uma simples definição, um hash é uma coleção de pares chave-valor, ou seja, uma chave apontando para um valor.
Explicando um pouco mais...
Hash é uma estrutura de dados semelhante ao Array, conhecida também como Hash Table, Dictionary e Hash Map com o objetivo de armazenar elementos ou informações. Porém, diferentemente do array:
- Seus elementos estão associados a um objeto e não um índice inteiro;
- Uma chave sempre ira apontar para um valor;
- Uma chave Hash pode ser (quase) qualquer tipo de objeto;
- A chave identifica unicamente um objeto. Tipicamente é um atributo dele.
Manipulando - Hash
Imagine o seguinte cenário, estamos montando um cadastro de clientes, e vamos usar o hash
para armazenar as informações dos clientes…
Vamos começar com um hash vazio
person = Hash.new => {} # Também podemos criar um novo hash vázio, apenas atribuindo {} # person = {}
Conferindo se person
é realmente um hash
person => {}
person.class => Hash
Verificar se nosso hash
está vazio
person.empty? => true
Podemos iniciar um hash
com dados...
genre = { m: 'Male', f: 'Female' } => {:m=>"Male", :f=>"Female"}
genre => {:m=>"Male", :f=>"Female"}
A chave de um Hash pode ser qualquer tipo de dado
hash = {1 => 'A integer', true => 'A boolean', [1,2,3] => 'Array'} => {1=>"A integer", true=>"A boolean", [1, 2, 3]=>"Array"}
hash => {1=>"A integer", true=>"A boolean", [1, 2, 3]=>"Array"}
Vamos adicionar name, age e birth
person[:name] = 'Diego' => "Diego" person[:age] = 34 => 34 person[:birth] = '23/03/1987' => "23/03/1987"
Verificando se os dados foram inseridos corretamente:
person => {:name=>"Diego", :age=>34, :birth=>"23/03/1987"}
Vamos ver os dados:
person[:name] => "Diego" person[:age] => 34 person[:birth] => "23/03/1987"
Quantos items temos em nosso hash person?
person.size => 3
Vamos excluir birth?
person.delete(:birth) => "23/03/1987"
Como deve ter ficado os dados de person
?
person => {:name=>"Diego", :age=>34}
Verificando se nosso hash está vazio
person.empty? => false
Caso você queira se aprofundar e saber mais detalhes sobre Hash
eu sugiro que dê uma olhada na documentação do Ruby que também é bastante completa e tem vários exemplos.
Contato:
Email: contato@diegonovais.com.br
LinkedIn: https://www.linkedin.com/in/diegonovais/
Github: https://github.com/dnovais
Top comments (0)