Ruby Academy · Aula

Padrões de arrays e hashes

Desestruture dados.

Aula 2 de 413 etapas

Padrões de arrays e hashes é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.

Padrões de lista

Um padrão de lista corresponde pela posição e pelo comprimento. Cada padrão de elemento é verificado em relação ao elemento correspondente.

case [1, 2, 3]
in [1, 2, 3]
  puts 'exact match'
end

Associação de elementos de uma lista

Use identificadores para capturar cada posição em uma variável.

case [10, 20]
in [x, y]
  puts(x + y)
end

O comprimento é importante

Por padrão, um padrão de lista exige o comprimento exato. Um padrão com dois elementos não corresponderá a uma lista com três elementos.

case [1, 2, 3]
in [a, b]
  puts 'two'
in [a, b, c]
  puts 'three'
end

Expansão para o restante

Uma expansão *rest captura qualquer quantidade de elementos restantes em uma lista, tornando o comprimento flexível.

case [1, 2, 3, 4]
in [first, *rest]
  puts(first)
  p rest
end

Expansão no meio

A expansão pode ficar entre elementos fixos para capturar o início e o fim, ignorando o meio.

case [1, 2, 3, 4, 5]
in [first, *, last]
  puts("#{first} ... #{last}")
end

Padrões de mapa

Um padrão de mapa corresponde pelas chaves. Ele verifica se as chaves fornecidas existem e se seus valores correspondem; chaves adicionais são permitidas.

case { name: 'Ada', age: 36 }
in { name: 'Ada' }
  puts 'found Ada'
end

Associação de valores de um mapa

Capture um valor fornecendo à chave um nome de associação. Escrever apenas a chave associa o valor a uma variável com o mesmo nome.

case { name: 'Bob', age: 25 }
in { name: String => n, age: Integer => a }
  puts("#{n} is #{a}")
end

Associação abreviada de chaves

Omitir o padrão após uma chave associa automaticamente uma variável cujo nome é o da chave.

case { city: 'Istanbul' }
in { city: }
  puts(city)
end

Exigindo nenhuma chave adicional

Por padrão, os padrões de mapa ignoram chaves adicionais. Adicione **nil para exigir que somente as chaves listadas estejam presentes.

case { a: 1 }
in { a: 1, **nil }
  puts 'exactly one key'
end

Padrões aninhados

Os padrões podem ser aninhados livremente, permitindo desestruturar estruturas profundas em uma única ramificação.

data = { user: { name: 'Ada', tags: ['admin', 'dev'] } }
case data
in { user: { name:, tags: [first_tag, *] } }
  puts("#{name}: #{first_tag}")
end

Correspondência com JSON analisado

A correspondência de padrões combina muito bem com dados JSON ou CSV analisados, extraindo exatamente os campos necessários.

require 'json'
resp = JSON.parse('{"status":"ok","items":[1,2,3]}', symbolize_names: true)
case resp
in { status: 'ok', items: }
  puts(items.sum)
end

Verificação rápida

Por padrão, o padrão de mapa in { a: 1 } corresponderá ao mapa { a: 1, b: 2 }?

Recapitulação: padrões de listas e mapas

Você pode desestruturar coleções:

  • Padrões de lista correspondem por posição e comprimento
  • *rest captura os elementos restantes
  • Padrões de mapa correspondem por chave e permitem elementos adicionais
  • A forma abreviada { key: } associa variáveis com o mesmo nome
  • **nil proíbe chaves adicionais; os padrões podem ser profundamente aninhados
case { id: 1, items: [9, 8] }
in { items: [head, *] } then puts head
end
Grátis para começar

Aprenda Ruby com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
29
Aulas
109

Perguntas Frequentes

A aula “Padrões de arrays e hashes” é grátis?

Sim — o texto completo de “Padrões de arrays e hashes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.

O que vou aprender em “Padrões de arrays e hashes”?

Desestruture dados. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Ruby Academy?

Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Padrões de arrays e hashes”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Ruby Academy?

Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos de case/in
  2. Padrões de arrays e hashes
  3. Padrões de busca e guardas
  4. Casos de uso práticos
← Voltar para Ruby Academy