Le variabili in Swift sono un concetto linguistico fondamentale e potente. Anche se sembrano semplici, includono molte funzionalità, e ci sono anche alcune trappole comuni che si incontrano quando si esegue la programmazione Swift.
In questo breve video tutorial del mio corso sulla creazione di app iOS con Swift 3, spiegherò variabili, costanti e optionals, con particolare attenzione al sistema di tipo Swift.
Swift ha alcune caratteristiche che sono molto potenti e maneggevoli quando si tratta di variabili. Iniziamo con un parco giochi nuovo di zecca.
Come puoi vedere, c'è già un'assegnazione di variabile sullo schermo, che è stata creata dal modello. Ha il var
parola chiave di fronte ad essa, seguita da un nome di variabile e il compito-qui, "Ciao, parco giochi"
. Fin qui tutto bene.
Quello che non vedi in questa riga di codice è un tipo di assegnazione. Non è necessario. Creiamo una nuova variabile chiamata int e diamo il valore 8
:
var int = 8
Ok, ora cambiamo il str
variabile per essere il valore 4
. Immediatamente, il compilatore si lamenta che stai cercando di impostare un valore di tipo int
essere di tipo Stringa
.
Come fa a sapere questo?
È dedotto. Nonostante il suo aspetto, Swift è un linguaggio tipizzato staticamente, il che significa che ogni variabile ha un tipo. Ma a differenza della maggior parte degli altri linguaggi, può dedurre il tipo quando viene assegnato un valore durante la definizione. Per il nostro caso, questo significa dal str
variabile è stata data una stringa, ha ricevuto automaticamente il tipo Stringa
.
Lo stesso per il int
variabile. Questo possiamo impostare 4
perché è un numero intero.
A volte, si desidera specificare esplicitamente il tipo di variabile. Certo, questo è anche possibile. Creiamo una variabile Doppio
, e impostarlo 4
.
Sappiamo già che verrà inizializzato su un numero intero, nonostante il nome. Quindi quando proviamo a impostarlo 4.5
, questo fallirà. Per essere sicuri che sarà un doppio, dobbiamo impostarlo usando i due punti dopo il nome della variabile, seguito dal tipo, in maiuscolo, Doppio
.
Ok, ora sulle costanti. Quelli sono quelli da utilizzare se non si desidera modificare il valore inizialmente impostato.
Il compilatore Swift è molto intelligente e ti avvisa se usi una variabile dove vuoi una costante e viceversa. Per definire una costante, avrai bisogno della parola chiave permettere
invece di var
. Nel codice di prima, se si modifica il Doppio
variabile a una costante, il compilatore ti avviserà della modifica che stai cercando di fare nella riga successiva impostandola su 4.5
.
Una cosa che è stata molto divertente quando è uscito per la prima volta Swift è il fatto che è completamente compatibile con Unicode. Ciò significa anche che i nomi delle variabili possono essere qualsiasi carattere in stile Unicode se si desidera impostare π
a 3.14159
. Supporta anche l'uso di emoji per nominare le tue variabili e funzioni.
L'ultima caratteristica principale riguardante le variabili in Swift è opzionale.
Ogni qualvolta si definisce una variabile, è necessario inizializzarla prima di utilizzarla. Se non lo fai, il tuo programma non verrà compilato. A volte, tuttavia, la variabile non avrà sempre un valore. Ad esempio, quando si dispone di una funzione di callback che restituisce il risultato di un'operazione o un errore.
C'è sempre stato il concetto di puntatori nulli nella programmazione. In Swift, quelli sono chiamati nil. Quelle sono variabili inizializzate con un valore speciale di niente. Se si desidera consentire un valore nullo per una variabile in Swift, è necessario dirlo esplicitamente e la variabile diventa facoltativa. Per esempio:
var myVariable: String? stampa (myVariable)
Un opzionale è definito aggiungendo un punto interrogativo al tipo. Questo fa immediatamente funzionare la dichiarazione di stampa, che emette zero
.
Cambiamo la mia variabile per essere doppia, e moltiplichiamo per 2. Sebbene sia consentito zero, non puoi farci molto. Questo significa che abbiamo bisogno di una salvaguardia. Poiché i controlli nulli sono un problema molto comune nella programmazione, i progettisti linguistici di Swift hanno deciso di darci un modo speciale di affrontarli.
Potresti aver imparato quell'assegnazione variabile in un Se
la dichiarazione è una cattiva pratica. Per Swift, questo è diverso. Se lo stai facendo se lascia myVariable = miaVariabile
, esso scarterà automaticamente l'opzionale per te e lo renderà disponibile nel blocco if per te se non è zero.
Iniziamo quindi la variabile con un valore. Nel blocco, lo moltiplicherà per 2 e lo stamperà. Ma se proviamo a fare lo stesso fuori dal blocco, ovviamente fallirà.
Se si è assolutamente certi che una variabile ha un valore e non si desidera avvolgerlo in modo condizionale, è anche possibile scartarlo forzatamente utilizzando un punto esclamativo. Questo verrà scartato se c'è un valore, ma se non lo è, fallirà molto duramente con un'eccezione di runtime. Quindi, se stai lavorando molto con gli optionals, sicuramente ricorda questo speciale Se
dichiarazione.
Una cosa molto importante quando si tratta di lavorare con l'elettricità statica permettere
i tipi è la conversione di tipo.
Diciamo che hai un doppio e vuoi un intero. In Swift, ogni tipo viene fornito con un inizializzatore, anche con valori booleani o interi. I tipi di default hanno anche gli inizializzatori per i tipi compatibili, quindi possiamo usare il int
inizializzatore per convertire il nostro doppio.
Per approfondire ulteriormente il tipo di casting, ho bisogno di introdurre un nuovo set di tipi, collezioni. Sono abbastanza sicuro di sapere che cos'è un array e, naturalmente, sono disponibili anche in Swift. Creiamo un array di numeri interi:
let intArray = [1, 2, 3, 4]
Potresti essere abituato a mettere tutto ciò che ti viene in mente in un array e anche mescolare i tipi. Ma in Swift, gli array sono anche tipizzati staticamente contro i loro valori. Questo significa che se vuoi aggiungere una stringa al tuo array di interi, Swift non sa cosa fare. let intArray = [1, 2, 3, 4, "String"]
darà un messaggio di errore.
Quindi rimuoviamo la stringa e la aggiungiamo in una riga separata all'array. Ora mostra il messaggio di errore che volevo mostrarti.
Questo errore proviene dal tipo dell'array, poiché viene dedotto da un array di numeri interi. Possiamo impostarlo esplicitamente su questo tipo usando parentesi quadre attorno al tipo di contenuto. Questo è il metodo più conciso per definire la matrice.
È anche possibile utilizzare l'array del tipo e utilizzare le parentesi angolari per definire il tipo. Questo potrebbe sembrarti più familiare se vieni da un'altra lingua. Naturalmente, ci sono alcuni casi in cui si desidera effettivamente consentire tipi misti in un array. Tra un minuto, ti mostrerò un altro tipo di dati in cui archiverai la risposta JSON di un server web, che potrebbe contenere numeri, booleani o stringhe.
C'è una parola chiave speciale in Swift che consente a quei tipi di essere presenti, e viene chiamato Qualunque
. Ciò significa che questo può essere di qualsiasi tipo. Certo, il problema è che siamo ancora in una lingua tipizzata in modo statico. Ora i valori sono di tipo Qualunque
. Se vogliamo aggiungere i primi due numeri interi, semplicemente non riesce a farlo perché il Qualunque
il tipo non supporta l'operatore di addizione.
Ciò significa che dobbiamo utilizzare la trasmissione dei tipi per convertirli nel tipo corretto. Possiamo usare il come
parola chiave per farlo. E, ovviamente, dato che non è sicuro, dobbiamo usare anche il botto per forzarlo, poiché non vi è alcuna conversione nota tra Qualunque
e int
. Se lo facciamo, però, dobbiamo stare molto attenti con i tipi reali. Se si esegue il cast dell'elemento errato come numero intero, fallirà in fase di runtime con un'eccezione.
Ora, manca una cosa importante. Sono dizionari. Se provieni da un'altra lingua, potresti conoscerli come mappe o hash.
Hanno le chiavi che hanno dei valori. Se vuoi definirli esplicitamente, farai lo stesso con l'array usando parentesi quadre ma separa la chiave e il valore da due punti.
Definire a Stringa
chiave e un Qualunque
il valore sarebbe un caso d'uso molto comune durante l'analisi dei dati JSON dal web.
Nel corso completo, Crea app per iOS con Swift 3, otterrai una guida completa all'utilizzo di Swift 3 per creare app iOS.
Se sei nuovo nello sviluppo di app per iOS o stai cercando di passare da Objective-C, questo corso ti consentirà di iniziare con lo sviluppo di app per Swift. Imparerai tutte le caratteristiche di base della lingua, dalle variabili alle classi. Avrai anche una introduzione all'uso di Xcode per lo sviluppo di app mentre segui e implementa il progetto del corso: un visualizzatore di sequenze interattive di Fibonacci.