Els optionals són una característica poderosa i essencial de Swift que permeten gestionar l'absència de valors. En aquest tema, aprendrem què són els optionals, com es declaren, com es desempaqueten i com es poden utilitzar de manera segura.
Què són els Optionals?
En Swift, un optional és un tipus que pot contenir un valor o nil (cap valor). Els optionals són útils per representar situacions on un valor pot estar absent.
Declaració d'Optionals
Per declarar una variable o constant com a optional, s'utilitza el signe de pregunta (?) després del tipus de dada.
Assignació de Valors a Optionals
Els optionals poden ser inicialitzats amb un valor o amb nil.
Desempaquetament d'Optionals
Per utilitzar el valor d'un optional, primer cal desempaquetar-lo. Hi ha diverses maneres de fer-ho:
Desempaquetament Forçat
El desempaquetament forçat s'utilitza quan estem segurs que l'optional conté un valor. S'utilitza el signe d'exclamació (!).
Nota: El desempaquetament forçat pot causar un error en temps d'execució si l'optional és nil.
Desempaquetament Segur (Binding d'Optionals)
El binding d'optionals és una manera segura de desempaquetar un optional. S'utilitza la instrucció if let o guard let.
if let
var nom: String? = "Joan"
if let nomDesempaquetat = nom {
print(nomDesempaquetat) // Joan
} else {
print("El nom és nil")
}guard let
func imprimirNom(_ nom: String?) {
guard let nomDesempaquetat = nom else {
print("El nom és nil")
return
}
print(nomDesempaquetat) // Joan
}
imprimirNom("Joan")Desempaquetament Implicit
Els optionals amb desempaquetament implícit (!) es desempaqueten automàticament quan s'utilitzen. Són útils quan estem segurs que l'optional sempre contindrà un valor després de ser inicialitzat.
Operador de Coalescència Nil
L'operador de coalescència nil (??) proporciona un valor per defecte si l'optional és nil.
var nom: String? = nil let nomPerDefecte = nom ?? "Nom desconegut" print(nomPerDefecte) // Nom desconegut
Exercicis Pràctics
Exercici 1
Declara una variable optional de tipus String anomenada ciutat i assigna-li el valor "Barcelona". Desempaqueta-la de manera segura i imprimeix el valor.
var ciutat: String? = "Barcelona"
if let ciutatDesempaquetada = ciutat {
print(ciutatDesempaquetada) // Barcelona
} else {
print("La ciutat és nil")
}Exercici 2
Declara una variable optional de tipus Int anomenada edat i assigna-li el valor nil. Utilitza l'operador de coalescència nil per assignar un valor per defecte de 18 i imprimeix el resultat.
Exercici 3
Escriu una funció anomenada imprimirSalutacio que prengui un optional de tipus String anomenat nom com a paràmetre. La funció ha de desempaquetar el nom de manera segura i imprimir una salutació. Si el nom és nil, ha d'imprimir "Hola, desconegut!".
func imprimirSalutacio(_ nom: String?) {
if let nomDesempaquetat = nom {
print("Hola, \(nomDesempaquetat)!")
} else {
print("Hola, desconegut!")
}
}
imprimirSalutacio("Joan") // Hola, Joan!
imprimirSalutacio(nil) // Hola, desconegut!Errors Comuns i Consells
- Desempaquetament Forçat: Evita utilitzar el desempaquetament forçat (
!) a menys que estiguis absolutament segur que l'optional conté un valor. Això pot causar errors en temps d'execució. - Oblit de Desempaquetar: Recorda sempre desempaquetar els optionals abans d'utilitzar-los. Utilitza el binding d'optionals (
if letoguard let) per fer-ho de manera segura. - Utilització de Coalescència Nil: Utilitza l'operador de coalescència nil (
??) per proporcionar valors per defecte i evitar errors quan els optionals sónnil.
Conclusió
Els optionals són una característica fonamental de Swift que permeten gestionar l'absència de valors de manera segura i eficient. Hem après com declarar, desempaquetar i utilitzar optionals, així com alguns errors comuns a evitar. Amb aquesta base, estàs preparat per avançar cap a temes més complexos en Swift.
Curs de Programació en Swift
Mòdul 1: Introducció a Swift
- Introducció a Swift
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Swift
- Sintaxi i Estructura Bàsica
- Variables i Constants
- Tipus de Dades
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Closures
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Closures
- Funcions d'Ordre Superior
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Swift Avançat
Mòdul 6: Swift i Desenvolupament iOS
- Introducció al Desenvolupament iOS
- Conceptes Bàsics de UIKit
- Storyboards i Interface Builder
- Xarxes en Swift
- Core Data
- Conceptes Bàsics de SwiftUI
