Tipi di Dato – La distinzione è tutto
Oggi affronteremo un altro degli argomenti chiave che farà da fondamento al vostro modo di interagire e creare Comandi Rapidi: i Tipi di Dato.
Cosa sono e come usarli?
Prima di passare alla parte tecnica dell’argomento, lasciatemi giocare un po’ con quella teoria elementare che mi piace tanto.
Se qualcuno vi dicesse: “qual’è il risultato della somma di 2 arance e due limoni?”
Voi cosa rispondereste?
Beh! è chiaro… di certo non fa 4 aramoni. Il risultato resterebbe 2 arance e 2 limoni.
Qualcuno di voi, però, potrebbe optare per una soluzione pratica e realistica: mettere i quattro elementi all’interno di una busta, cosi da avere tutti gli elementi insieme.
Beh! In questo modo continueremmo a non avere una risposta alla domanda iniziale, perchè il totale non sarebbe 4 arance e neanche 4 limoni ma solamente l’unione di 4 agrumi di due categorie differenti.
Ma che c’entra tutto questo con Shortcuts o con la programmazione?
Questa concatenazione di elementi differenti, per quanto possa essere anche “fattibile” nell’uso pratico di Shortcuts e sottoforma di tipi di dato differenti (un esempio banale potrebbe essere la concatenazione di numeri e stringhe), è importante che venga utilizzata con parsimonia e ben identificata all’operazione che si necessita svolgere.
In molti altri contesti, invece, risulta essere poco pratica e, spesso, per nulla funzionale all’operatività da svolgere. Motivo per cui è bene saper riconoscere e differenziare, a priori, gli elementi appartenenti allo stesso tipo, cosi da poter eseguire operazioni e verifiche in modo pulito.
Ma che vuol dire tutto questo? e che vuol dire: “dello stesso tipo?”
Ritorniamo per un momento all’esempio degli agrumi e soffermiamoci sull’ovvio:
Quando sei nel reparto ortofrutta di un supermercato e, nello specifico, nella sezione degli agrumi, sai ben distinguere quali sono le arance dai limoni e questa naturale distinzione è resa essenziale dall’esigenza di scegliere l’elemento giusto con il quale interagire in cucina.
Quindi: L’appartenenza di un elemento specifico all’uso che ne va fatto
Ecco! Questo distinzione è alla base di quanto stiamo affrontando oggi, e prende il nome di Type Safe o Tipizzazione.
Prima di proseguire oltre, vorrei precisare che la Tipizzazione applicata all’uso di Shortcuts è molto debole rispetto ai linguaggi di programmazione, ma è necessario conoscerne i pregi e le dinamiche.
Guarda un po’ che Tipi!
Le tipologie di dato presenti all’interno di Shortcuts, come nella logica di qualunque strumento, sono molteplici e per capire il nesso che li accomuna – La tipizzazione – ne andremo a trattare 2 di uso molto comune: Stringhe e Numeri.
Gestire i tipi Testo (o Stringhe)
Partiamo subito con degli esempi pratici e osserviamo insieme il primo screen:
Ho inserito un’azione di tipo Testo (o stringa) che ho subito assegnato ad una variabile di nome testo.
Fin qui tutto semplice! Abbiamo una variabile che contiene un’oggetto/azione di tipo Testo (o stringa).
Ma siamo sicuri che quella variabile sappia fornire la natura del suo contenuto all’azione/oggetto che tenterà di accedervi? la risposta è Ni. Cioè, non è sempre scontato. Per questo motivo esistono ulteriori azioni/oggetti che precedono il richiamo delle variabili e che consentono a noi stessi di forzare il tipo di dato che quella variabile contiene.
Per esempio:
- Ottieni Testo dall’input (Per forzare il contenuto di un’entità ad essere di tipo Testo o Stringa)
- Ottieni i numeri dall’input (Per forzare il contenuto di un’entità ad essere di tipo Numerico)
- Ottieni contenuti pagine Web (Per forzare il contenuto di un’entità ad essere di tipo HTML)
- Ottieni date dall’input (Per forzare il contenuto di un’entità ad essere di tipo data)
ecc…
Vediamo subito cosa vuol dire tutto questo con un altro esempio:
Nell’esempio è stata aggiunta un’azione/oggetto Niente (che serve solo per separare e ordinare le varie azioni) e, successivamente, un’azione/oggetto Se/Altrimenti (Affronteremo l’uso di questa azione/oggetto in un capitolo dedicato). A quest’ultima è stata applicata la variabile testo come Input. Se proviamo a cliccare su Condizioni, vedremo che la proposta delle condizioni è correlata al tipo di dato che l’azione/oggetto Se/Altrimenti ha ricevuto come Input: cioè un tipo Testo (o stringa). Se l’azione/oggetto Se/Altrimenti avesse ricevuto un numero come Input, la proposta sarebbe stata differente.
Questo accade perchè l’app Comandi, nel suo dietro le quinte, riconosce ed etichetta le variabili con il tipo di dato corrispondente all’input ricevuto. Questo vuol dire che se Assegnamo un’azione/oggetto di tipo Testo (o stringa) ad una variabile, sarà cura dell’app Comandi riconoscerne il tipo ed etichettare quella variabile come variabile di tipo Stringa/Testo. L’azione/oggetto che riceverà quella variabile come Input, saprà adattarsi al tipo di dato.
A questo punto direte: “Bene, allora fa tutto da solo, perchè dovremmo preoccuparcene?”
Purtroppo questo automatismo non è sempre favorevole e potrebbe capitare il caso in cui l’app Comandi non riesca a riconoscere ed etichettare la variabile in base al tipo di dato ricevuto. Vediamo subito un esempio pratico.
Creaimo un nuovo Comando eseguendo questi passaggi:
- Inseriamo un’azione/oggetto Imposta la variabile e diamo testo come nome. Input lo lasciamo vuoto al momento
- Inseriamo un’azione/oggetto Niente per separare le prossime istruzioni
- Inseriamo l’azione/oggetto Se/Altrimenti e assegnamogli la variabile testo come input
- Adesso Inseriamo un’azione/oggetto di tipo Testo sopra ad Imposta la variabile. Successivamente, se non lo ha fatto in automatico, assegnamo l’azione/oggetto Testo come Input della variabile.
- Come potete vedere dallo screen precedente, siamo nella stassa situazione del secondo screen, ma se proviamo a cliccare sulle condizioni dell’azione/oggetto Se/Altrimenti, vedrete che le condizioni proposte non sono più le stesse della prima volta ma sono più generiche. Questo perchè Comandi non riconosce più il Tipo di dato contenuto nella variabile e non è in grado di stabilire che tipo di condizioni mostrare.
Appare ben chiaro che per risolvere questa situazioni d’incertezza del dato, che sia con il Se/Altrimenti o con altre azioni/aggetti che accettano valori in Input, è indispensabile intervenire a monte e forzare noi stessi il tipo di dato che deve essere passato come Input di un’azione/oggetto. Noi sappiamo sempre che tipo di dato diamo in pasto ad un’oggetto/azione, per cui è importante forzare il tipo per evotare inconvienenti di questo tipo.
Se nell’esempio precedente avessimo anteposto un’azione/oggetto Ottieni testo dall’input all’azione/oggetto Se/Altrimenti, avremmo facilmente forzato l’azione/oggetto Se/Altrimenti ad interpretare il contenuto della variabile testo come di tipo Testo (o stringa).
Ecco l’esempio
Gestire i tipi Numero
Partiamo subito con degli esempi pratici e osserviamo insieme il primo screen:
Come esercizio di questa lezione, vi invito a completare, con il tipo Numero, le medesime dinamiche del tipo Testo.
Ci leggiamo alla prossima!