Skip to main content

Swift: Costanti, Inferred Types, Variabili e Optional Types

Costanti

Una costante è una referenza a un valore che può essere assegnata una sola volta e letta varia volte. Per creare una costante in Swift si usa la keyword let.

Con l’istruzione precedente abbiamo creato una costante il cui nome è aNumber, di tipo Int e avente valore 5.

Successivamente possiamo stampare il valore associato a aNumber:

Non è possibile assegnare un nuovo valore alla costante, la seguente istruzione darà errore:

Inferred Type

Una delle caratteristiche ricorrenti in Swift è l’essenzialità. E’ notevole come molte ridondanze presenti nella maggior parte dei linguaggi di programmazione siano state eliminate fino a lasciare ciò che veramente conta. Torniamo alla riga in cui abbiamo dichiarato la costante aNumber:

In questa istruzione stiamo dicendo al compilatore che aNumber:

  1. è di tipo Int
  2. referenzia l’intero 5

Il compilatore può inferire la prima informazione a partire dalla seconda, quindi la prima è ridondante. In Swift possiamo scrivere la stessa istruzione come segue:

Il risultato sarà esattamente lo stesso e anche se non è specificato nel codice, aNumber è una costante di tipo Int. In Xcode basta premere alt e cliccare su aNumber per averne conferma.

Screen Shot 2014-12-08 at 12.30.36

La tecnica Inferred Type funziona con ogni tipo di dato:

Screen Shot 2014-12-08 at 12.37.30

Variabili

Una variabile è una referenza a un valore che può essere assegnata e letta varie volte. In Swift definiamo una variabile con la keyword var:

Abbiamo creato una variabile di tipo Int contenente il valore 0.

Successivamente possiamo cambiare il valore referenziato da count:

Fortunatamente non è possibile cambiare il tipo di una variabile dopo la sua definizione (come invece accade in JavaScript).

Optional Type

Generalmente nei linguaggi di programmazione compilati è possibile distinguere 2 tipi di variabili (o costanti), quelle che referenziano tipi primitivi e quelle che referenziano oggetti. In questi linguaggi la variabili che referenziano un tipo primitivo non possono mai assumere valori nulli mentre quelle che referenziano oggetti possono sempre potenzialmente avere un valore nullo.

Swift slega questi 2 concetti e permette di dichiarare se una variabile può assumere un valore nullo indipendentemente dal fatto che referenzi un tipo primitivo o un oggetto.

Torniamo alla nostra variabile:

Alt + click con Xcode per ottenere maggiori informazioni.

Screen Shot 2014-12-08 at 13.03.24

Come previsto Xcode ci sta dicendo che count è di tipo Int. Quindi se proviamo ad assegnargli un valore di tipo non Int, ad esempio nil, otterremo un errore.

Screen Shot 2014-12-08 at 13.05.22

Questo perché count non è un Optional.

Dichiariamo una nuova variabile come segue:

Il punto interrogativo dopo il tipo di dato indica al compilatore che si tratta di un Optional, un tipo di dato che contiene Int e che può essere nullo.

Ora funziona.

La possibilità di sapere a tempo di compilazione se una variabile (o in generale un certo valore) potrà o meno essere nullo rende più robusto l’intero codice.

Prima di utilizzare un tipo di dato Optional è necessario effettuare l’unwrap, ovvero trasformarlo da Optional a Non Optional.

Esempio:

Screen Shot 2014-12-08 at 13.12.44

L’ultima riga genera un errore perché stiamo sommando count (di tipo Int) a optionalCount (di tipo Int?). optionalCount può potenzialmente contenere il valore nil quindi viene segnalato un errore a tempo di compilazione.

Nella schermata successiva stiamo controllando che optionalCount sia diverso da nil e in tal caso effettuiamo l’unwrap aggiungendo il simbolo ! a optionalCount.

 

Trainer • Developer • Writer

Luca Angeletti

Trainer • Developer • Writer

4 thoughts on “Swift: Costanti, Inferred Types, Variabili e Optional Types

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *