ExpertiDict

Ruby · Intermediário · Inglês · Técnico

pattern matching

/ˈpætɚn ˈmætʃɪŋ/substantivo

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

Exemplos

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

Veja também

Todos os termos de Ruby