Nel primo articolo di Swift From Scratch, hai imparato a conoscere i parchi giochi Xcode e hai scritto le tue prime battute su Swift. In questo articolo, inizieremo ad apprendere i fondamenti del linguaggio di programmazione Swift esplorando le variabili e digitando. Osserveremo anche le costanti e perché sei incoraggiato a usarle il più possibile.
Nelle prossime puntate di questa serie, utilizzeremo i parchi giochi Xcode per apprendere i fondamenti del linguaggio di programmazione Swift. Come abbiamo visto nel precedente articolo, i campi da gioco sono l'ideale per insegnare e imparare Swift.
Iniziamo creando un nuovo parco giochi per questo tutorial. Ti incoraggio a seguire! L'uso di una lingua è un ottimo modo per imparare la sua sintassi e comprenderne i concetti.
Avvia Xcode 8 e crea un nuovo parco giochi selezionando Nuovo> Parco giochi ... da Xcode's File menu. Inserire un nome per il parco giochi, impostare piattaforma a iOS, e fare clic Il prossimo. Dillo a Xcode dove vorresti salvare il parco giochi e colpire Creare.
Cancella il contenuto del campo da gioco in modo che possiamo iniziare con una lavagna pulita. Abbiamo già utilizzato le variabili nel tutorial precedente, ma ora diamo un'occhiata più da vicino ai dettagli nitidi per capire meglio cosa sta facendo Swift dietro le quinte.
In Swift, usiamo il var
parola chiave per dichiarare una variabile. Mentre questo è simile al modo in cui le variabili vengono dichiarate in altri linguaggi di programmazione, vi consiglio caldamente di non pensare ad altri linguaggi di programmazione quando usate il var
parola chiave in Swift. Ci sono alcune importanti differenze.
Il var
la parola chiave è l'unico modo per dichiarare una variabile in Swift. L'uso più comune e conciso di var
la parola chiave è dichiarare una variabile e assegnarvi un valore.
var street = "5th Avenue"
Ricorda che non mettiamo fine a questa riga di codice con un punto e virgola. Mentre un punto e virgola è facoltativo in Swift, la pratica migliore è quella di non utilizzare un punto e virgola se non è richiesto.
Potresti anche aver notato che non abbiamo specificato un tipo quando dichiari la variabile strada
. Questo ci porta ad una delle caratteristiche principali di Swift, tipo di inferenza.
L'affermazione precedente dichiara una variabile strada
e assegna il valore 5th Avenue
ad esso. Se sei nuovo a Swift o sei abituato a JavaScript o PHP, allora potresti pensare che Swift sia un linguaggio tipizzato o non tipizzato, ma nulla potrebbe essere più lontano dalla verità. Permettetemi di ribadire che Swift è un linguaggio fortemente tipizzato. Digitare sicurezza è uno dei capisaldi della lingua.
Abbiamo appena iniziato e Swift ci mostra già un po 'della sua magia. Anche se l'istruzione precedente non specifica esplicitamente un tipo, la variabile strada
è di tipo Stringa
. Questa è l'inferenza di tipo di Swift in azione. Il valore a cui assegniamo strada
è una stringa. Swift è abbastanza intelligente da vederlo e imposta implicitamente il tipo di strada
a Stringa
.
La seguente affermazione ci dà lo stesso risultato. La differenza è che impostiamo esplicitamente il tipo di variabile. Questa affermazione lo dice letteralmente strada
è di tipo Stringa
.
var street: String = "5th Avenue"
Swift richiede di impostare in modo esplicito o implicito il tipo di variabili e costanti. Se non lo fai, Swift si lamenta di aver commesso un errore. Aggiungi la seguente riga al tuo parco giochi per vedere cosa intendo.
numero var
Questa affermazione sarebbe perfettamente valida in JavaScript o in PHP. In Swift, tuttavia, non è valido. La ragione è semplice. Anche se dichiariamo una variabile usando il var
parola chiave, non specifichiamo il tipo di variabile. Swift non è in grado di dedurre il tipo poiché non assegniamo un valore alla variabile. Se fai clic sull'errore, Xcode ti dice cosa c'è di sbagliato in questa affermazione.
Possiamo facilmente risolvere questo problema facendo una delle due cose. Possiamo assegnare un valore alla variabile come in precedenza, oppure possiamo specificare esplicitamente un tipo per la variabile numero
. Quando impostiamo esplicitamente il tipo di numero
, l'errore scompare. La seguente riga di codice lo legge numero
è di tipo Stringa
.
numero var: stringa
Come puoi vedere di seguito, assegnando nuovi valori a strada
e numero
è semplice e non ha sorprese.
var street: String = "5th Avenue" var numero: String street = "Main Street" numero = "10"
Non sarebbe più facile assegnare il numero 10
al numero
variabile? Non è necessario memorizzare il numero civico come stringa. Vediamo cosa succede se lo facciamo.
var street: String = "5th Avenue" var numero: String street = "Main Street" numero = 10
Se assegniamo un numero intero a numero
, Xcode ci lancia un altro errore. Il messaggio di errore è chiaro. Non possiamo assegnare un valore di tipo Int
a una variabile di tipo Stringa
. Questo non è un problema nelle lingue vagamente digitate, ma è in Swift.
Swift è un linguaggio fortemente tipizzato in cui ogni variabile ha un tipo specifico e quel tipo non può essere modificato. Leggi di nuovo questa frase per farla sprofondare perché questo è un concetto importante in Swift.
Per eliminare l'errore, dobbiamo dichiarare il numero
variabile come un Int
. Dai un'occhiata all'esempio aggiornato di seguito.
var street: String = "5th Avenue" var numero: Int street = "Main Street" numero = 10
È importante tenere presente quanto segue. Puoi dichiarare una variabile con il var
parola chiave e non è necessario dichiarare esplicitamente il tipo della variabile. Tuttavia, ricorda che ogni variabile e costante ha un tipo in Swift. Se Swift non può inferire il tipo, allora si lamenta. Ogni variabile ha un tipo e quel tipo non può essere cambiato.
Le costanti sono simili alle variabili in termini di digitazione. L'unica differenza è che il valore di una costante non può essere modificato una volta che ha un valore. Il valore di una costante è, beh ... costante.
Per dichiarare una costante, usi il permettere
parola chiave. Dai un'occhiata al seguente esempio in cui dichiariamo strada
come costante anziché come variabile.
let street: String = "5th Avenue" var numero: Int street = "Main Street" numero = 10
Se aggiorniamo solo la prima riga, sostituendo var
con permettere
, Xcode genera un errore per ovvi motivi. Non è consentito provare a cambiare il valore di una costante in Swift. Rimuovi o commenta la linea in cui cerchiamo di assegnare un nuovo valore a strada
per sbarazzarsi dell'errore.
let street: String = "5th Avenue" var numero: Int // street = "Main Street" numero = 10
Spero tu sia d'accordo sul fatto che la dichiarazione delle costanti sia molto semplice in Swift. Non c'è bisogno di parole chiave esotiche o di una sintassi complessa. Dichiarare le costanti è facile come dichiarare le variabili, e non è una coincidenza.
L'uso delle costanti è incoraggiato in Swift. Se un valore non cambierà o non ti aspetti che cambi, allora dovrebbe essere una costante. Questo ha un certo numero di vantaggi. Uno dei vantaggi è rappresentato dalle prestazioni, ma un vantaggio più importante è la sicurezza. Usando le costanti ogni volta che è possibile, si aggiungono vincoli al codice, il che si traduce in un codice più sicuro.
La maggior parte dei linguaggi di programmazione ha una vasta gamma di tipi per memorizzare stringhe, numeri interi, float, ecc. L'elenco dei tipi disponibili in Swift è conciso. Dai un'occhiata al seguente elenco:
Int
Galleggiante
Doppio
Stringa
Personaggio
Bool
È importante capire che i tipi di cui sopra non sono tipi di base o primitivi. Sono chiamati tipi, che sono implementati da Swift usando le strutture. Esploriamo le strutture in modo più dettagliato più avanti in questa serie, ma è bene sapere che i tipi che abbiamo incontrato fino ad ora non sono gli stessi dei tipi primitivi che potresti aver usato, ad esempio, Objective-C.
Ci sono molti altri tipi di dati in Swift, come tuple, array e dizionari. Esploriamo quelli più avanti in questa serie.
C'è un altro argomento di cui abbiamo bisogno di discutere, digitare conversione. Dai uno sguardo al seguente frammento di Objective-C. Questo blocco di codice emette il valore 314.000000
alla console.
int a = 100; float b = 3,14; NSLog (@ "% f", (a * b));
Il runtime Objective-C viene convertito in modo implicito un
a un valore in virgola mobile e lo moltiplica con B
. Riscriviamo lo snippet di codice sopra indicato con Swift.
var a = 100 var b = 3.14 stampa (a * b)
Ignora il stampa (_: separatore: Terminator :)
funzione per ora. Prima voglio concentrarmi sulla moltiplicazione di un
e B
. Swift deduce il tipo di un
, un Int
, e B
, un Doppio
. Tuttavia, quando il compilatore tenta di moltiplicare un
e B
, nota che non sono dello stesso tipo. Questo potrebbe non sembrare un problema per te, ma è per Swift. Swift non sa di che tipo dovrebbe essere il risultato di questa moltiplicazione. Dovrebbe essere un numero intero o un doppio?
Per risolvere questo problema, dobbiamo assicurarci che entrambi gli operandi della moltiplicazione siano dello stesso tipo. Swift non converte implicitamente gli operandi per noi, ma è facile farlo. Nell'esempio aggiornato di seguito, creiamo a Doppio
utilizzando il valore memorizzato in un
. Questo risolve l'errore.
var a = 100 var b = 3.14 stampa (Doppia (a) * b)
Si noti che il tipo di un
non è cambiato. Anche se lo snippet di codice sopra può sembrare tipo casting, non è la stessa cosa. Noi uso il valore memorizzato in un
creare un Doppio
, e quel risultato è usato nella moltiplicazione con B
. Il risultato della moltiplicazione è di tipo Doppio
.
Quello che devi ricordare è che Swift è diverso da C e Objective-C. Non converte implicitamente i valori di variabili e costanti. Questo è un altro concetto importante da comprendere.
Nel frammento di codice precedente, hai invocato la tua prima funzione, stampa (_: separatore: Terminator :)
. Questa funzione è simile a Objective-C's NSLog
; stampa qualcosa e aggiunge una nuova riga. Per stampare qualcosa sulla console o sul pannello dei risultati sulla destra, invochi stampa (_: separatore: Terminator :)
e passa un parametro. Può essere una variabile, una costante, un'espressione o un valore letterale. Dai uno sguardo ai seguenti esempi.
var string = "questa è una stringa" let constant = 3.14 stampa (stringa) stampa (costante) stampa (10 * 50) stampa ("stringa letterale")
È anche possibile utilizzare l'interpolazione delle stringhe per combinare variabili, costanti, espressioni e valori letterali. L'interpolazione delle stringhe è molto semplice in Swift. Avvolgi le variabili, le costanti, le espressioni o i letterali in \ ()
. Facile come torta.
let street = "5th Avenue" let number = 10 print ("Vive a \ (street) \ (number).")
È fondamentale capire come Swift gestisce variabili e costanti. Mentre potrebbe essere necessario del tempo per abituarsi al concetto di costanti, una volta che hai adottato questa best practice, il tuo codice sarà molto più sicuro e più facile da capire. Nel prossimo tutorial di questa serie, continueremo la nostra esplorazione di Swift guardando le collezioni.
Abbiamo creato una guida completa per aiutarti a imparare Swift, sia che tu stia appena iniziando con le basi o che desideri esplorare argomenti più avanzati.
Se vuoi imparare come usare Swift 3 per codificare le applicazioni del mondo reale, consulta il nostro corso Crea app per iOS con Swift 3. Che tu sia nuovo nello sviluppo di app per iOS o che stia cercando di passare da Objective-C, questo corso ti consentirà di iniziare con Swift per lo sviluppo di app.