Ruby · Intermediário · Inglês · Técnico
pattern matching
Recurso do case/in que compara a estrutura de um valor, como arrays e hashes, e extrai partes em variáveis. Disponível e estável nas versões atuais do Ruby.
Onde usar
Útil para tratar respostas de API ou resultados com formatos variados, no lugar de vários ifs aninhados. Se nenhum padrão casar e não houver else, levanta NoMatchingPatternError.
Em código
resp = { status: 'ok', dados: [1, 2] }
case resp
in { status: 'ok', dados: [primeiro, *] }
puts "primeiro: #{primeiro}"
in { status: 'erro' }
puts 'falhou'
endExemplos
Pattern matching makes this API response easy to unpack.
Pattern matching facilita desmontar essa resposta de API.
Without an else branch it raises NoMatchingPatternError.
Sem um ramo else, ele levanta NoMatchingPatternError.
Cuidado
Não é uma regex: o case/in compara estrutura e tipo, usando === em cada padrão.
Sinônimos
case in