Padrões de busca e guardas
Condições nas correspondências.
Padrões de busca e guardas é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 3 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.
Condições de guarda
Adicione uma guarda if ou unless a um padrão. A ramificação corresponde somente quando o padrão e a condição são bem-sucedidos.
case 7
in Integer => n if n.odd?
puts 'odd integer'
endGuardas usam variáveis associadas
A guarda pode referenciar variáveis associadas pelo padrão, permitindo expressar condições detalhadas sobre os dados correspondentes.
case [4, 9]
in [a, b] if a < b
puts 'ascending pair'
endGuardas com unless
Uma guarda unless corresponde quando a condição é falsa, o inverso de if.
case 0
in Integer => n unless n.positive?
puts 'zero or negative'
endVárias ramificações com guardas
Combine guardas entre ramificações para criar uma sequência clara de decisões.
def grade(score)
case score
in Integer => s if s >= 90 then 'A'
in Integer => s if s >= 70 then 'B'
else 'C'
end
end
puts(grade(85))Padrões de busca
Um padrão de busca [*, x, *] procura uma subcorrespondência em uma lista em qualquer posição, com expansões nas duas extremidades.
case [1, 2, 3, 4]
in [*, 3, *]
puts 'contains a 3'
endAssociação dentro de uma busca
O elemento correspondente em um padrão de busca pode ser associado, capturando o valor encontrado.
case [10, 20, 30]
in [*, x, *] if x > 25
puts("found #{x}")
endCaptura do que está ao redor
As duas expansões em um padrão de busca podem receber nomes para capturar os elementos anteriores e posteriores à correspondência.
case [1, 2, 99, 4, 5]
in [*before, 99, *after]
p before
p after
endComo encontrar um elemento de determinado tipo
Padrões de busca podem ser combinados com padrões de tipo para localizar o primeiro elemento de um determinado tipo.
case [1, 'hi', 2]
in [*, String => word, *]
puts(word)
endGuardas versus padrões
Expresse no padrão aquilo que puder ser definido estruturalmente e use guardas somente para condições que os padrões não conseguem capturar, como comparações numéricas ou chamadas de método.
case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
puts 'adult admin'
endCombinando busca e guarda
Padrões de busca e guardas juntos permitem perguntar: algum elemento satisfaz esta condição?
numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
puts("first even-ish hit: #{n}")
endOrdem das ramificações
As ramificações são testadas de cima para baixo; a primeira correspondência vence. Coloque padrões com guardas mais específicos antes dos padrões gerais.
case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
endVerificação rápida
O que o padrão de busca [*, x, *] faz?
Recapitulação: padrões de busca e guardas
Você adicionou condições e busca à correspondência:
- Guardas
if/unlessrefinam um padrão - Guardas podem usar variáveis associadas
- Padrões de busca
[*, x, *]procuram em qualquer posição - As duas expansões podem receber nomes para capturar o que está ao redor
- A primeira ramificação correspondente vence, portanto a ordem é importante
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
endPerguntas Frequentes
A aula “Padrões de busca e guardas” é grátis?
Sim — o texto completo de “Padrões de busca e guardas” é 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 busca e guardas”?
Condições nas correspondências. 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 3 de 4.
Quanto tempo leva a aula “Padrões de busca e guardas”?
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
- Fundamentos de case/in
- Padrões de arrays e hashes
- Padrões de busca e guardas
- Casos de uso práticos