Switch / Case
Instrada la chiamata in base al valore di una variabile. Ogni caso dichiarato crea una propria uscita, per corrispondenza esatta o secondo un modello, e Default raccoglie il resto.
In breve
| Uscite | una per caso dichiarato, più Default |
| Etichetta di un'uscita | il valore del caso, preceduto da ~ quando Regex è spuntata |
| Campi | Espressione da verificare, poi un elenco Valore del caso con una casella Regex |
| Confronto di default | corrispondenza esatta, maiuscole e spazi compresi |
| Numero di casi | illimitato |
| Ordine | il primo caso che corrisponde vince; i successivi non vengono valutati |
Il testo di aiuto mostrato nella finestra è: « Ogni caso crea un'uscita; « Default » viene preso se nessun caso corrisponde. Spuntate « Regex » per trattare il valore come un'espressione regolare (es. ^\+251, ^0[1-9][0-9]{7}$). Altrimenti, corrispondenza esatta. »
Come funziona
Il modulo calcola prima l'espressione da verificare, in genere una variabile scritta {{mia_variabile}}. Ottiene quindi un testo, quello che la variabile porta al momento del passaggio della chiamata.
Percorre poi i vostri casi dall'alto verso il basso e si ferma al primo che corrisponde. Se nessuno corrisponde, prende Default.
Corrispondenza esatta
Senza la casella Regex, un caso corrisponde quando il valore è rigorosamente identico: Premium e premium sono due valori diversi, e uno spazio di troppo basta a far fallire il confronto.
Modello, o espressione regolare
Un'espressione regolare è una descrizione di forma più che un valore. Invece di elencare le migliaia di numeri che iniziano con 02, descrivete « inizia con 02, poi delle cifre ».
Pochi simboli bastano a coprire quasi tutte le esigenze:
| Scrittura | Cosa significa |
|---|---|
^ | l'inizio del valore |
$ | la fine del valore |
\d | una cifra |
[0-9] | una cifra, altra scrittura |
[1-9] | una cifra da 1 a 9 |
+ | il segno precedente, una volta o più |
* | il segno precedente, zero volte o più |
{7} | il segno precedente, esattamente sette volte |
I due esempi dell'interfaccia si leggono così: ^\+251 corrisponde a qualsiasi valore che inizia con +251, e ^0[1-9][0-9]{7}$ a un valore di nove cifre che inizia con uno zero seguito da una cifra da 1 a 9.
Scrivete il modello da solo, senza racchiuderlo tra barre. ^02 è corretto, /^02/ non corrisponderà a nulla.
Cosa inserire
| Campo | Cosa è previsto | Se lo lasciate vuoto |
|---|---|---|
| Espressione da verificare | una variabile, ad esempio {{lingua}}, o un testo che ne contiene una | il valore verificato è vuoto, e solo un caso vuoto o Default può essere preso |
| Valore del caso | il valore atteso, o il modello se Regex è spuntata | senza Regex, il caso corrisponde solo a un valore esso stesso vuoto; con Regex, corrisponde a tutto e cattura ogni chiamata |
| Regex | spuntata, il valore diventa un modello | confronto per corrispondenza esatta |
Il pulsante Aggiungi crea una riga di caso, Elimina rimuove quella della riga. Salva chiude la finestra, e le uscite del modulo vengono rietichettate immediatamente.
Procedura
- Posizionate il modulo Switch / Case e collegate il nodo precedente al suo ingresso.
- Apritelo e compilate l'Espressione da verificare, copiando la variabile dal pannello Variabili disponibili piuttosto che ridigitarla.
- Cliccate su Aggiungi e inserite il Valore del caso. Ripetete per ogni valore che volete distinguere.
- Spuntate Regex solo sulle righe in cui descrivete una forma, e non un valore preciso.
- Ordinate i vostri casi dal più specifico al più generale: il primo che corrisponde vince.
- Cliccate su Salva. Il modulo mostra ora un'uscita per caso, più Default.
- Collegate ogni uscita alla sua destinazione, Default compreso: un'uscita presa che non porta da nessuna parte riaggancia la chiamata.
- Posizionate un modulo Debug subito prima, con la variabile verificata come messaggio. Leggerete il valore realmente confrontato.
- Cliccate su Salva, poi su Applica le modifiche nella barra superiore.
- Chiamate il vostro numero provocando ciascuno dei casi, e verificate che la chiamata parta effettivamente dove la attendete.
Se non funziona
Tutte le chiamate partono in Default. Leggete prima il valore realmente verificato, con un Debug posizionato subito prima. Nove volte su dieci è vuoto, perché il modulo che imposta la variabile non è stato attraversato, oppure perché il nome scritto tra parentesi graffe non corrisponde.
Il mio valore è quello giusto ma il caso non viene preso. Il confronto è esatto: Premium non è premium, e uno spazio in fondo al valore conta. Spuntate Regex e descrivete la forma, ad esempio ^[Pp]remium$.
Il mio modello non corrisponde mai. Scrivetelo senza barre intorno: ^02\d+ e non /^02\d+/. Verificate poi che un modello mal formato non passi inosservato: non corrisponde mai e non mostra alcun errore.
È sempre lo stesso caso a vincere, mentre due potrebbero corrispondere. È il comportamento previsto. Spostate il caso più specifico sopra quello più generale, oppure restringete il modello di quello più generale.
La chiamata si interrompe mentre un caso corrisponde bene. L'uscita di quel caso non è collegata a nulla. Verificate ogni uscita del modulo, Default compreso, dopo aver aggiunto o eliminato un caso: le uscite vengono rinumerate.
Come si costruisce il piano di chiamata, spiegato con le immagini
Vedi la pagina Piani di numerazione