DEV Community

Diego Novais
Diego Novais

Posted on • Edited on

6 1

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

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay