DEV Community 👩‍💻👨‍💻

Diego Novais
Diego Novais

Posted on • Updated on

Hash em Ruby

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:

  1. Seus elementos estão associados a um objeto e não um índice inteiro;
  2. Uma chave sempre ira apontar para um valor;
  3. Uma chave Hash pode ser (quase) qualquer tipo de objeto;
  4. 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 = {}
Enter fullscreen mode Exit fullscreen mode

Conferindo se person é realmente um hash

person
=> {}
Enter fullscreen mode Exit fullscreen mode
person.class
=> Hash
Enter fullscreen mode Exit fullscreen mode

Verificar se nosso hash está vazio

person.empty?
=> true
Enter fullscreen mode Exit fullscreen mode

Podemos iniciar um hash com dados...

genre = { m: 'Male', f: 'Female' }
=> {:m=>"Male", :f=>"Female"}
Enter fullscreen mode Exit fullscreen mode
genre
=> {:m=>"Male", :f=>"Female"}
Enter fullscreen mode Exit fullscreen mode

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"}
Enter fullscreen mode Exit fullscreen mode
hash
=> {1=>"A integer", true=>"A boolean", [1, 2, 3]=>"Array"}
Enter fullscreen mode Exit fullscreen mode

Vamos adicionar name, age e birth

person[:name] = 'Diego'
=> "Diego"

person[:age] = 34
=> 34

person[:birth] = '23/03/1987'
=> "23/03/1987"
Enter fullscreen mode Exit fullscreen mode

Verificando se os dados foram inseridos corretamente:

person
=> {:name=>"Diego", :age=>34, :birth=>"23/03/1987"}
Enter fullscreen mode Exit fullscreen mode

Vamos ver os dados:

person[:name]
=> "Diego"

person[:age]
=> 34

person[:birth]
=> "23/03/1987"
Enter fullscreen mode Exit fullscreen mode

Quantos items temos em nosso hash person?

person.size
=> 3
Enter fullscreen mode Exit fullscreen mode

Vamos excluir birth?

person.delete(:birth)
=> "23/03/1987"
Enter fullscreen mode Exit fullscreen mode

Como deve ter ficado os dados de person?

person
=> {:name=>"Diego", :age=>34}
Enter fullscreen mode Exit fullscreen mode

Verificando se nosso hash está vazio

person.empty?
=> false
Enter fullscreen mode Exit fullscreen mode

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)

Let's Get Wacky


Use any Linode offering to create something unique or silly in the DEV x Linode Hackathon 2022 and win the Wacky Wildcard category

Join the Hackathon <-