arrow_back Voltar ao curso

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.

js
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))  // muitos

Por 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:

js
cria rotular = (x) => ve-se (x) {
  bateu-com 0: "nada"
  bateu-com _: "tem coisa"
}

Comparando valores específicos

js
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