0Pricing
Swift Academy · Lezione

Optionals

Optionals

Optionals è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 1. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 1 lezioni in totale.

Introduzione

Salve,

Viene utilizzato per indicare che una variabile optional potrebbe non avere un valore.

Se una variabile di tipo optional ha un valore, questo viene estratto e utilizzato. In caso contrario, non è presente alcun valore.

Utilizzo degli optional per molti tipi in Swift

Può essere paragonato al nil pointer di Obj-C. Tuttavia, il nil pointer è valido solo per i tipi oggetto.

In Swift, gli optional vengono utilizzati non solo per i tipi oggetto, ma anche per struct, enum e tipi semplici.

var optionalVar: String?
// optionalVar is automatically set to nil]
/*
Since we define it as optional without
assigning a value, the variable 
automatically takes the value of nil.
*/

Il nil in Swift e il nil in Obj-C non sono la stessa cosa

Il nil in Swift e il nil in Obj-C non sono la stessa cosa.

Un nil pointer in Obj-C indica l'assenza dell'oggetto. In Swift non è un nil pointer. In Swift, nil indica l'assenza di dati ed è supportato anche per altri tipi, non solo per i tipi oggetto.

Force unwrap

È possibile accedere alle variabili definite come optional utilizzando il force unwrap.

Con l'operatore esclamativo, il codice può forzare l'estrazione del valore, ma in generale il suo utilizzo non è consigliato.

Se il dato referenziato non è disponibile durante il force unwrap, si verifica un errore a runtime.

let convertedNumber : Int? = 123
if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."

Accedere a un optional con Optional Binding

Accedere a un optional con Optional Binding

Con il blocco if let, possiamo accedere al valore della variabile optional assegnandolo a una costante o a una variabile.

Utilizzare questo metodo al posto del force unwrap è una soluzione più elegante.

var possibleNumber : String? = "10"

if let actualNumber = possibleNumber {
    print(actualNumber)
}

Esempio

if let firstNumber = Int("4"), let secondNumber = Int("42"), 
  firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
/*
 If at least one of them is false,
 it will not be entered in the if blog.
*/

Optional implicitamente scartati

Optional implicitamente scartati

In alcuni casi, il valore optional viene assegnato nella fase iniziale e, nei casi successivi, non è assolutamente nil.

In questi casi, invece di utilizzare l'optional (?), indicandolo con l'operatore (!), si specifica che questo optional non è certamente nil. 

Questa forma di definizione è chiamata 'optional implicitamente scartato'.

Scarto implicito

Scarto implicito

L'ambito in cui viene utilizzato più frequentemente è la fase di inizializzazione di una classe.

A differenza degli optional tradizionali, non è necessario estrarre il valore delle variabili definite implicitamente come scartate.

let possibleString: String? = "An optional string."
 // requires an exclamation mark
let forcedString: String = possibleString!

let assumedString: String! = "An implicitly unwrapped optional string."
// no need for an exclamation mark
let implicitString: String = assumedString 

Esempio

Se assegniamo nil a variabili di questo tipo, si verificano errori a runtime.

Vediamo un esempio

/*
We can use it during optional binding or we can check for nil.
So we use implicitly unwrapped optional 
in the same way we use classic optional.
*/

var assumedString: String! = nil

if let definiteString = assumedString {
    print(definiteString)
}
// Prints "An implicitly unwrapped optional string."

Avvertenza

Se una variabile potrebbe essere nil, non si deve utilizzare un optional implicitamente scartato.

Operatore di coalescenza nil

Operatore di coalescenza nil

Offre un modo pratico per estrarre i valori dei tipi optional.

Vediamolo con un esempio.

let defaultColorName = "red"
 // defaults to nil
var userDefinedColorName: String?  

var colorNameToUse = userDefinedColorName ?? defaultColorName
/*
userDefinedColorName is nil, 
so colorNameToUse is set to the default of "red"
*/


// a != nil ? a! : b 
/*
We can think of it as a shortcut to the above expression.
A checks if a is nil, if a is not nil, it unwrap and eturn, 
otherwise it returns the default value, ie b.
*/

Congratulazioni

Congratulazioni 🎉

Il concetto di optional è una delle funzionalità più importanti di Swift. Utilizzando gli optional, eliminiamo i controlli su Nil, scriviamo codice più elegante e rendiamo le nostre applicazioni più sicure.

Ci vediamo nella prossima lezione 🥳

Optionals — illustrazione 12

Domande Frequenti

La lezione «Optionals» è gratuita?

Sì — il testo completo di «Optionals» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 1 lezioni in totale.

Cosa imparerò in «Optionals»?

Optionals Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 1.

Quanto tempo richiede la lezione «Optionals»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

← Torna a Swift Academy