Ruby: pattern matching (case/in)
O case/in do Ruby, chamado pattern matching, confere se um valor tem um certo formato e extrai as partes dele no mesmo passo. As lições tratam de padrões de array com posições fixas, _, aninhamento, splats e o find pattern. Padrões de hash casam pela chave e ignoram chaves extras, a não ser que se use **nil. Depois vêm guardas com if e unless, o operador pin ^, alternativas com |, intervalos e capturas com =>. As últimas lições comparam case/in com case/when, mostram as formas de uma linha com in e => e terminam com um pequeno desafio.
O que você vai aprender
- ✓Casar arrays pelo formato com _, padrões aninhados, splats e o find pattern
- ✓Casar hashes pela chave, exigir valores e usar **nil e **rest
- ✓Acrescentar guardas com if e unless, e comparar com valores existentes usando ^
- ✓Aceitar vários padrões com | e capturar o que casou com =>
- ✓A diferença entre case/in e case/when, incluindo o NoMatchingPatternError
- ✓Casamento numa linha com valor in padrão e valor => padrão
Além do when: apresentando case/in
O curso anterior, "Lógica Ruby", terminou com case/when. Ele responde bem a um tipo de pergunta: a qual destas possibilidades este único valor corresponde? grade_letter e day_type compararam um valor com uma lista.
Ler a aula completa grátis →Currículo
7 aulasAlém do when: apresentando case/in
Apresenta o case/in como forma de conferir o formato de um valor e ligar suas partes a variáveis.
Casando a estrutura de arrays
Trata de padrões de array de tamanho fixo, posições ignoradas com _, padrões aninhados, splats e o find pattern.
Casando a estrutura de hashes
Mostra padrões de hash que casam pela chave, ignoram chaves extras, exigem valores e pedem chaves Symbol.
Guardas e o operador pin
Acrescenta guardas com if e unless aos padrões e usa ^ para comparar com um valor que já existe.
Alternativas, intervalos e =>
Explica alternativas com |, comparação com ===, intervalos sem fim, a regra sem captura e a ligação com =>.
case/in vs case/when, e o casamento numa linha
Compara case/in com case/when, trata do NoMatchingPatternError e apresenta as formas de uma linha com in e =>.
Juntando tudo: um pequeno desafio
Analisa um classificador que combina os padrões do curso e propõe o desafio de escrever describe_result.