Compatibile con Xcode 8

Enum linguaggio Swift. Raggruppare elementi comuni

Il tipo enum in Swift, o enumerations, è un particolare dato, simile per forma e non per utilizzo ad una classe, che permette di raggruppare più valori in una categoria comune. Definire una categoria significa che, i valori che si raggrupperanno dovranno avere una qualche sorta di correlazione tra di loro.

Ad esempio ipotizza di creare la categoria che rappresenta le regioni d’Italia. I suoi elementi non potranno che essere i nomi delle regioni. Se ti chiedessi quali sono le regioni d’Italia, tu cosa mi risponderesti?

Io le inizierei ad elencare più o meno così:

Con le conoscenze che hai acquisito fino ad ora dovresti essere in grado di rappresentare qualcosa del genere solo con gli array e dizionari o con una classe che al suo interno contenga un array:

Il problema che si viene a creare è di tipo progettuale. Gli array e dizionari sono dei contenitori di informazioni quindi di per se non nascono come descrittori di qualcosa, mi spiego meglio!

Gli array o i dizionari nascono come contenitore i cui valori verranno utilizzati per eseguire delle operazioni all’interno dell’applicazione (lettura, scrittura, stampa ecc).

Gli enum non sono contenitori. Sono delle strutture di alto livello che ti permetteranno di utilizzare una sintassi più sicura per descrivere elementi che hanno una qualche sorta di relazione.

So che può sembrare strano (un po’ come la programmazione ad oggetti) ma cominceranno ad avere un senso non appena comincerai a creare applicazioni.

enum-linguaggio-swift

La sintassi

Un tipo enum del linguaggio swift si definisce tramite la parola chiave enum seguita dal nome della categoria. Dopo vanno fatte seguire le parentesi graffe:

Ad ogni elemento si associa un case, più o meno come l’istruzione switch, grazie al quale sarà possibile accedere all’elemento:

Più elementi possono anche essere inseriti tutti in una linea:

Dato che stiamo definendo un nuovo tipo è bene che esso abbia la prima lettera del nome minuscola.

Utilizzo

Un enum, alla stregua di una classe, definisce un nuovo tipo di dato. la variabile definita come tipo Enum può assumere solo e solamente i valori contenuti all’interno della sua definizione:

Nell’esempio che vedi sopra ho assegnato alla costante unAltroPianeta il valore dell’enum in maniera contratta. Cioè utilizzando solamente la notazione .nomeCase. Adesso, utilizzando uno switch puoi incanalare la variabile per controllarne perfettamente il comportamento:

Utilizzato uno dei valori dell’enum automaticamente verrà stampato la stringa corrispondente al case dello switch. Ti ricordo che l’istruzione switch vuole definiti tutti i valori dell’enum o in alternativa puoi ovviare al problema utilizzando il case default:

Valore e RawValue

Una delle particolarità degli enum è quella di poter assegnare un valore ad ogni case.

Essendo un enum un raggruppamento di valori costanti che si assomigliano tra loro è ovvio, almeno per me, immaginare che abbiano tutti lo stesso tipo di dato come tipo del valore. Eeee?

Se vuoi enumerare le regioni partendo, ad esempio, da sud verso nord, è facile pensare come la regione più a sud abbia 1 come valore e la regione più a nord 21.

Quindi, l’enum che rappresenta le regione si può trasformare così:

Viene fatto seguire al nome dell’enum il tipo di dato che dovrà avere il valore che rappresenterà i vari casi. Puoi assegnare solo un valore per case! 

Per poter leggere il valore associato al case puoi utilizzare la proprietà .rawValue.

 

Considerazioni

Ho voluto trattare il tipo enum del linguaggio Swift in maniera semplice e veloce perché, in questo corso, non ci sono i presupposti per vedere le particolarità dell’enum e le sue infinite personalizzazioni.

Ad ogni modo, vedrai già un utilizzo reale dell’enum giù dalla prossima lezione dove sarà d’aiuto alla definizione dei possibili errori che potranno comparirà durante l’arco di vita dell’applicazione.

Buona Programmazione!

Changelog

  • 17/11/2016 – Aggiunto il changelog. Aggiornata la versione per il supporto a Xcode 8 e Swift 3.

Torna a: Corso gratuito linguaggio di programmazione Swift > Programmazione ad oggetti in Swift

Start typing and press Enter to search

Programmazione ad oggetti in SwiftLe strutture con il linguaggio Swift