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

AWS Q Developer image

Your AI Code Assistant

Automate your code reviews. Catch bugs before your coworkers. Fix security issues in your code. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Image of Checkly

4 Playwright Locators Explained: Which One Should You Use?

- locator('.cta'): Fast but brittle
- getByText('Click me'): User-facing, but can miss broken accessibility
- getByRole('button', { name: 'Click me' }): Most robust, best for a11y
- getByTestId('cta-button'): Stable, but ignores UX

Watch video

👋 Kindness is contagious

If you found this post helpful, please leave a ❤️ or a friendly comment below!

Okay