Swift - Opzionali
Swift 4 introduce anche Optionalstipo, che gestisce l'assenza di un valore. Gli optionals dicono "c'è un valore, ed è uguale a x" o "non c'è affatto un valore".
Un optional è un tipo a sé stante, in realtà una delle nuove enumerazioni super potenti di Swift 4. Ha due possibili valori,None e Some(T), dove T è un valore associato al tipo di dati corretto disponibile in Swift 4.
Ecco una dichiarazione Integer facoltativa:
var perhapsInt: Int?
Ecco una dichiarazione String opzionale:
var perhapsStr: String?
La dichiarazione precedente equivale a inizializzarla esplicitamente a nil che significa nessun valore -
var perhapsStr: String? = nil
Prendiamo il seguente esempio per capire come funzionano gli optional in Swift 4:
var myString:String? = nil
if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:
myString has nil value
Gli optional sono simili all'utilizzo nil con i puntatori in Objective-C, ma funzionano per qualsiasi tipo, non solo per le classi.
Scartamento forzato
Se hai definito una variabile come optional, quindi per ottenere il valore da questa variabile, dovrai unwrapesso. Questo significa semplicemente mettere un punto esclamativo alla fine della variabile.
Facciamo un semplice esempio:
var myString:String?
myString = "Hello, Swift 4!"
if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:
Optional("Hello, Swift 4!")
Ora applichiamo lo scartamento per ottenere il valore corretto della variabile -
var myString:String?
myString = "Hello, Swift 4!"
if myString != nil {
print( myString! )
} else {
print("myString has nil value")
}
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato.
Hello, Swift 4!
Disimballaggio automatico
È possibile dichiarare variabili facoltative utilizzando un punto esclamativo invece di un punto interrogativo. Tali variabili facoltative verranno scartate automaticamente e non è necessario utilizzare ulteriori punti esclamativi alla fine della variabile per ottenere il valore assegnato. Facciamo un semplice esempio:
var myString:String!
myString = "Hello, Swift 4!"
if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:
Hello, Swift 4!
Rilegatura opzionale
Utilizzare l'associazione facoltativa per scoprire se un facoltativo contiene un valore e, in tal caso, per rendere tale valore disponibile come costante o variabile temporanea.
Un'associazione facoltativa per if l'affermazione è la seguente:
if let constantName = someOptional {
statements
}
Facciamo un semplice esempio per comprendere l'uso dell'associazione facoltativa:
var myString:String?
myString = "Hello, Swift 4!"
if let yourString = myString {
print("Your string has - \(yourString)")
} else {
print("Your string does not have a value")
}
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:
Your string has - Hello, Swift 4!