Switch / Case
Direciona a chamada segundo o valor de uma variável. Cada caso declarado cria a sua própria saída, por igualdade exata ou segundo um modelo, e Predefinição recolhe o resto.
Em resumo
| Saídas | uma por caso declarado, mais Predefinição |
| Rótulo de uma saída | o valor do caso, precedido de ~ quando Regex está marcado |
| Campos | Expressão a testar, depois uma tabela Valor do caso com uma caixa Regex |
| Comparação predefinida | igualdade exata, maiúsculas e espaços incluídos |
| Número de casos | ilimitado |
| Ordem | o primeiro caso que corresponder vence; os seguintes não são avaliados |
O texto de ajuda mostrado na janela é: «Cada caso cria uma saída; «Predefinição» é utilizada se nenhum caso corresponder. Marque «Regex» para tratar o valor como uma expressão regular (ex. ^\+251, ^0[1-9][0-9]{7}$). Caso contrário, igualdade exata.»
Como funciona
O módulo calcula primeiro a expressão a testar, em geral uma variável escrita {{minha_variavel}}. Obtém, portanto, um texto, o que a variável contém no momento da passagem da chamada.
Percorre depois os casos de cima para baixo e para no primeiro que corresponder. Se nenhum corresponder, utiliza Predefinição.
Igualdade exata
Sem a caixa Regex, um caso corresponde quando o valor é rigorosamente idêntico: Premium e premium são dois valores diferentes, e um espaço a mais basta para a comparação falhar.
Modelo, ou expressão regular
Uma expressão regular é uma descrição de forma em vez de um valor. Em vez de listar os milhares de números que começam por 02, descreve-se «começa por 02, depois algarismos».
Alguns sinais bastam para cobrir quase todas as necessidades:
| Escrita | O que significa |
|---|---|
^ | o início do valor |
$ | o fim do valor |
\d | um algarismo |
[0-9] | um algarismo, outra escrita |
[1-9] | um algarismo de 1 a 9 |
+ | o sinal anterior, uma vez ou mais |
* | o sinal anterior, zero vezes ou mais |
{7} | o sinal anterior, exatamente sete vezes |
Os dois exemplos da interface leem-se assim: ^\+251 corresponde a qualquer valor que comece por +251, e ^0[1-9][0-9]{7}$ a um valor de nove algarismos que começa com um zero seguido de um algarismo de 1 a 9.
Escreva o modelo sozinho, sem o cercar de barras. ^02 está correto, /^02/ não corresponderá a nada.
O que preencher
| Campo | O que é esperado | Se o deixar vazio |
|---|---|---|
| Expressão a testar | uma variável, por exemplo {{idioma}}, ou um texto que a contenha | o valor testado é vazio, e só um caso vazio ou Predefinição pode ser utilizado |
| Valor do caso | o valor esperado, ou o modelo se Regex estiver marcado | sem Regex, o caso só corresponde a um valor ele mesmo vazio; com Regex, corresponde a tudo e capta todas as chamadas |
| Regex | marcada, o valor passa a modelo | comparação por igualdade exata |
O botão Adicionar cria uma linha de caso, Eliminar remove a da linha. Guardar fecha a janela, e as saídas do módulo são reetiquetadas de imediato.
Passo a passo
- Coloque o módulo Switch / Case e ligue o nó anterior à sua entrada.
- Abra-o e preencha a Expressão a testar, copiando a variável do painel Variáveis disponíveis em vez de a reescrever.
- Clique em Adicionar e indique o Valor do caso. Repita para cada valor que quiser distinguir.
- Marque Regex apenas nas linhas onde descreve uma forma, e não um valor preciso.
- Ordene os casos do mais preciso ao mais geral: o primeiro que corresponder vence.
- Clique em Guardar. O módulo mostra agora uma saída por caso, mais Predefinição.
- Ligue cada saída ao seu destino, Predefinição incluída: uma saída acionada que não leva a lado nenhum desliga a chamada.
- Coloque um módulo Depuração imediatamente antes, com a variável testada como mensagem. Vai ler-se o valor realmente comparado.
- Clique em Guardar, depois em Aplicar as alterações na faixa superior.
- Ligue para o número provocando cada um dos casos, e verifique que a chamada segue mesmo para onde se espera.
Se não funcionar
Todas as chamadas seguem para Predefinição. Leia primeiro o valor realmente testado, com uma Depuração colocada imediatamente antes. Nove em cada dez vezes está vazio, porque o módulo que define a variável não foi atravessado, ou porque o nome escrito entre chavetas não corresponde.
O meu valor é o certo mas o caso não é utilizado. A comparação é exata: Premium não é premium, e um espaço no fim do valor conta. Marque Regex e descreva a forma, por exemplo ^[Pp]remium$.
O meu modelo nunca corresponde. Escreva-o sem barras à volta: ^02\d+ e não /^02\d+/. Verifique em seguida que um modelo malformado não passa despercebido: nunca corresponde e não mostra nenhum erro.
É sempre o mesmo caso que vence, quando dois poderiam corresponder. É o comportamento esperado. Suba o caso mais preciso acima do mais geral, ou restrinja o modelo do mais geral.
A chamada é cortada mesmo quando um caso corresponde bem. A saída desse caso não está ligada a nada. Verifique cada saída do módulo, Predefinição incluída, depois de adicionar ou eliminar um caso: as saídas renumeram-se.
Como se constrói o plano de chamadas, explicado em imagens
Ver a página Planos de numeração