Criando e acessando hashes

Prévia grátis 2 min de leitura

Um hash pareia chaves com valores

Arrays guardam valores pela posição, como fruits[0] para o primeiro. Um hash guarda cada valor sob um nome, uma chave, e o busca por esse nome.

user = { name: "Ada", role: "admin", active: true }

{...} é o literal de hash. Cada entrada é uma chave e um valor unidos por dois-pontos: name: "Ada" junta a chave :name com "Ada". Essa forma curta só funciona com chaves symbol, de Símbolos vs strings, escritas sem os dois-pontos na frente.

A sintaxe mais antiga: qualquer tipo de chave

user = { "name" => "Ada", 1 => "one", :active => true }

A sintaxe => ("hash rocket") aceita qualquer objeto como chave: uma string, um número, até outro hash. Código Rails usa a forma curta com symbol em quase todo lugar. A seta aparece quando a chave não é symbol, ou em código anterior ao Ruby 1.9, que trouxe a forma curta.

Lendo um valor pela sua chave

user = { name: "Ada", role: "admin" }
user[:name]     # => "Ada"
user[:role]     # => "admin"
user[:missing]  # => nil, sem erro, igual à leitura fora dos limites de um array

user[:name] busca o valor ligado a :name. Uma chave que nunca foi definida lê como nil, como fruits[10] no curso de arrays.

Chaves string e chaves symbol são chaves diferentes

Isso pega quase todo mundo uma vez: :name e "name" são chaves diferentes.

user = { name: "Ada" }
user[:name]     # => "Ada", a chave symbol
user["name"]    # => nil, uma chave string nunca foi definida

É a distinção do curso de symbols aplicada a buscas. Um hash feito com chaves symbol só responde a symbols; uma string parecida não casa.

Pontos-chave

  • Um literal de hash pareia chaves e valores com : (atalho de chave symbol) ou => (qualquer tipo de chave): { name: "Ada" } ou { "name" => "Ada" }.
  • hash[chave] lê um valor; uma chave ausente devolve nil, nunca erro.
  • :name e "name" são chaves diferentes e nunca casam entre si.
  • Código Rails prefere a forma curta com symbol; a seta aparece para chaves que não são symbol.
Aula 1 de 7 · grátis

Continue com a aula 2

Adicionando, atualizando e removendo

Usar hash[chave] = valor para adicionar ou atualizar, delete para remover, e como ambos alteram o hash original.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...