0Pricing
Ruby Academy · Aula

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'
end

Guardas 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'
end

Guardas 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'
end

Vá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'
end

Associaçã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}")
end

Captura 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
end

Como 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)
end

Guardas 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'
end

Combinando 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}")
end

Ordem 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'
end

Verificaçã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 / unless refinam 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
end

Perguntas 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

  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