Intern
O que é um hash (HASH) em Ruby?
sobes.tech IA
Resposta da IA
Hash (Hash) em Ruby é uma coleção ordenada de pares "chave-valor", onde cada chave única está associada a um valor específico. As chaves geralmente são símbolos (Symbol) ou strings (String), mas podem ser quaisquer objetos que implementem os métodos eql? e hash.
Características do hash:
- Ordem: Desde Ruby 1.9, os hashes mantêm a ordem de inserção dos elementos.
- Acesso por chave: O acesso aos valores é feito rapidamente pela chave correspondente.
- Tamanho dinâmico: Os hashes podem expandir-se ou contrair-se à medida que elementos são adicionados ou removidos.
- Sem duplicados de chaves: Cada chave é única dentro de um hash.
Exemplos de criação de hashes:
# Uso de literal
pessoa = { "nome" => "Alice", "idade" => 30 }
# Uso de símbolos como chaves (forma mais comum e eficiente)
configuracao = { :tema => "escuro", :idioma => "ru" }
# Notação estilo hash com símbolos (Ruby 1.9+)
config = { host: "localhost", port: 8080 }
# Usando o construtor Hash.new
hash_vazio = Hash.new
Operações principais com hashes:
| Operação | Exemplo | Descrição |
|---|---|---|
| Acesso ao valor | pessoa["nome"] |
Retorna o valor associado à chave "nome" |
| Adição/alteração | pessoa["cidade"] = "Nova York" |
Adiciona ou altera o par chave-valor |
| Remoção | pessoa.delete("idade") |
Remove o par com a chave "idade" |
| Tamanho | pessoa.size ou pessoa.length |
Retorna o número de pares no hash |
| Verificação de chave | pessoa.key?("nome") |
Verifica se a chave existe no hash |
| Verificação de valor | pessoa.value?(30) |
Verifica se o valor existe no hash |
| Iteração | `pessoa.each { | chave, valor |
| Chaves | pessoa.keys |
Retorna um array com todas as chaves |
| Valores | pessoa.values |
Retorna um array com todos os valores |
Exemplo de uso:
dados_usuario = {
nome: "Boris",
idade: 45,
cidade: "Moscou"
}
# Acesso aos dados
puts dados_usuario[:nome] # => Boris
# Adicionando novo campo
dados_usuario[:trabalho] = "Desenvolvedor"
# Alterando valor
dados_usuario[:idade] = 46
# Removendo campo
dados_usuario.delete(:cidade)
# Iterando sobre o hash
dados_usuario.each do |chave, valor|
puts "#{chave}: #{valor}"
end