Voltar ao curso
Wildcard (
ve-se — Pattern Matching
Fundamentos do XanaScript • Aula 9 de 20
O ve-se é o pattern matching: combina um valor contra vários padrões, não só valores. É o parente poderoso do vai-de.
cria descrever = (n) => ve-se (n) {
bateu-com 0: "zero"
bateu-com 1: "um"
qualquer-coisa: "muitos"
}
grita-ae(descrever(0)) // zero
grita-ae(descrever(42)) // muitosPor que pattern matching é mais seguro que if?
No se-pah você compara com == manualmente e esquece casos fácil. No ve-se, você é forçado a pensar em todos os casos porque a estrutura exige um padrão pra cada situação — e o qualquer-coisa (o caso "resto") documenta explicitamente o que acontece com o que não casou.
Wildcard (_)
O _ é um curinga que ignora o valor:
cria rotular = (x) => ve-se (x) {
bateu-com 0: "nada"
bateu-com _: "tem coisa"
}Comparando valores específicos
cria verifica = (cor) => ve-se (cor) {
bateu-com "vermelho": "quente"
bateu-com "azul": "frio"
qualquer-coisa: "neutro"
}Ordem dos padrões importa
O primeiro padrão que casa vence. Ponha os casos específicos antes dos genéricos — se bateu-com _ viesse primeiro, nada mais seria testado.
Comentários