Home Testo Corso Swift Introduzione alla funzione Opzionalità

Introduzione alla funzione Opzionalità

554
0
Opzionalità

In questa lezione spiegherò il concetto di Opzionalità in Swift, a cosa serve e come utilizzarlo.

Se ti ricordi quando abbiamo parlato delle variabili le abbiamo definite come dei contenitori che posso essere dichiarate in modo esplicito o implicito e servono a contenere informazioni.

Ora sai definire il nulla o il niente? No! Se hai pensato al numero zero o alle “” stai andando fuori strada. il numero zero infatti è un numero che rappresenta il non valore come le virgolette.

Ti faccio un esempio se hai una torta formata da 4 fette, dire che la torta ha 0 fette vuol dire che è finita ma non che non esiste.

Ti ricordi la differenza tra dichiarare una variabile e inizializzare una variabile?

Dichiarazione:
var miaVariabile : Int

Inizializzazione:
var maiVariabile = Int() che significa inizializzata a 0
var miaVaribile = 2 che significa inizializzata a 2

Se fai una prova stampando la variabile solo dichiarata o esegui una operazione su di essa (print(miaVariabile) o miaVariabile + 2) il compilatore ti notifica errore dicendo che miaVariabile non è inizializzata.

Questo accade perchè quando la variabile è solo dichiarata si trova in uno stato di “non presenza di valore” e non contenendo nessun valore il compilatore non è in grado eseguire operazioni.

Ora, per evitare questo errore si potrebbe risolvere il problema a monte inizializzando subito ogni variabile ma come accennato nella lezione precedente anche inizializzare una variabile consuma risorse di memoria e tempo. Poi, perché dovrei inizializzare una variabile prima del suo reale utilizzo? Cioè se una variabile la utilizzerai dopo 2876 righe di codice, perché farla nascere prima del tempo?

Ecco! Dopo questa lunga premessa finalmente parliamo di cosa è l’opzionalità in Swift e come utilizzarla.

I marcatori “?” e “!” per definire e gestire l’opzionalità in Swift di una variabile

Dichiarando una variabile opzionale dico al compilatore, occhio! Questa è una variabile opzionale che potrebbe essere nulla (non inizializzata) o contenere un valore.

Riprendendo l’esempio precedente per dichiarare una variabile opzionale basta aggiungere il marcatore ? dopo il tipo quindi scriverò:

var miaVariabile: Int?

ora se provi a stampare miaVariaible il compilatore non notifica più errore ma ti da come risulta nil ovvero niente/nullo che ti ricordo come detto e diverso da dire zero.

Tornando all’esempio della torta potrei dire, io metto questo piatto sul tavolo potrei appoggiarci una torta oppure no.

A questo punto quando mi serve posso inizializzare la mia variabile, miaVariabile = 4.

Se provi adesso a stampare sul Playground come risultato troverai scritto optional(4). Questo accade perché una variabile opzionale si presenta con una duplice forma tipo moneta da una parte nil dall’altra il valore 4.

Il linguaggio Swift non è in grado di capire quale delle due forme stai utilizzando. Per questo motivo, previene il problema, dicendoti che all’interno della variabile c’è un valore opzionale. Quindi il Playground preferisce dirti: “Ehi, il valore c’è però potrebbe non esserci” e la sintassi “Optional(valore)” .

Se per esempio adesso a miaVariabile aggiungo 2, miaVariabile + 2, il compilatore di darebbe errore perchè non è in grado di capire se vuoi accedere al contenuto della variabile oppure se vuoi continuare a considerarla come opzionale.

Per risolve il dilemma bisogna dirgli guarda, voglio usare il valore contenuto nella variabile e per farlo devo utilizzare il marcatore !.

Quindi se voglio sommare il 2 a miaVariabile scriverò:

miavariabile! += 2

In questo modo ho detto al compilatore prendi il valore contenuto nella variabile e aggiungi 2 al suo valore.

Quindi per rendere opzionale una variabile bisogna utilizzare il marcatore ? mentre per leggere ed eseguire operazione sul valore in essa contenuto bisogna utilizzare il marcatore !.

Per qualunque dubbio o domanda scrivi un commento in questa lezione.