Introducció
En aquest tema, aprendrem sobre les funcions i les closures en Swift. Les funcions són blocs de codi reutilitzables que realitzen una tasca específica, mentre que les closures són blocs de codi que poden ser passats i utilitzats dins d'altres funcions o com a valors de variables. Aquestes eines són fonamentals per a la programació en Swift i ens permeten escriure codi més modular i reutilitzable.
Funcions
Definició de Funcions
Una funció en Swift es defineix utilitzant la paraula clau func, seguida del nom de la funció, una llista de paràmetres entre parèntesis i el tipus de retorn. Aquí teniu un exemple bàsic:
Cridant Funcions
Per cridar una funció, simplement utilitzem el seu nom seguit dels arguments entre parèntesis:
Paràmetres i Tipus de Retorn
Les funcions poden tenir múltiples paràmetres i un tipus de retorn. Si una funció no retorna cap valor, utilitzem Void o simplement ometem el tipus de retorn:
func add(a: Int, b: Int) -> Int {
return a + b
}
func printMessage() {
print("Això és un missatge.")
}Paràmetres amb Noms i Etiquetes
Swift permet definir etiquetes de paràmetres per millorar la llegibilitat del codi:
func greet(person name: String, from hometown: String) -> String {
return "Hola \(name)! Un plaer conèixer-te de \(hometown)."
}
let message = greet(person: "Anna", from: "Barcelona")
print(message) // Sortida: Hola Anna! Un plaer conèixer-te de Barcelona.Paràmetres per Defecte
Podem assignar valors per defecte als paràmetres de les funcions:
func greet(name: String = "amic") -> String {
return "Hola, \(name)!"
}
print(greet()) // Sortida: Hola, amic!
print(greet(name: "Anna")) // Sortida: Hola, Anna!Closures
Definició de Closures
Les closures són blocs de codi que poden ser passats com a arguments a funcions o assignats a variables. Es defineixen utilitzant una sintaxi similar a les funcions, però sense la paraula clau func i amb una sintaxi més concisa:
let sum: (Int, Int) -> Int = { (a: Int, b: Int) -> Int in
return a + b
}
let resultat = sum(3, 5)
print(resultat) // Sortida: 8Closures com a Paràmetres de Funcions
Les closures són especialment útils quan es passen com a paràmetres a altres funcions. Per exemple, podem utilitzar una closure per ordenar una llista:
let nombres = [3, 1, 4, 1, 5, 9]
let nombresOrdenats = nombres.sorted(by: { (a: Int, b: Int) -> Bool in
return a < b
})
print(nombresOrdenats) // Sortida: [1, 1, 3, 4, 5, 9]Sintaxi Reduïda de Closures
Swift permet una sintaxi més curta per a les closures, eliminant parts redundants:
let nombresOrdenats = nombres.sorted(by: { a, b in a < b })
print(nombresOrdenats) // Sortida: [1, 1, 3, 4, 5, 9]Encara més curta:
Exercicis Pràctics
Exercici 1: Funció de Salutació
Crea una funció anomenada saluda que prengui un nom com a paràmetre i retorni una salutació personalitzada.
func saluda(nom: String) -> String {
return "Hola, \(nom)!"
}
// Prova la funció
let salutacio = saluda(nom: "Joan")
print(salutacio) // Sortida esperada: Hola, Joan!Exercici 2: Funció de Suma
Crea una funció anomenada suma que prengui dos enters com a paràmetres i retorni la seva suma.
func suma(a: Int, b: Int) -> Int {
return a + b
}
// Prova la funció
let resultat = suma(a: 3, b: 4)
print(resultat) // Sortida esperada: 7Exercici 3: Ordenar una Llista amb una Closure
Utilitza una closure per ordenar una llista de nombres en ordre descendent.
let nombres = [10, 2, 33, 4, 5]
let nombresOrdenats = nombres.sorted(by: { $0 > $1 })
print(nombresOrdenats) // Sortida esperada: [33, 10, 5, 4, 2]Conclusió
En aquesta secció, hem après a definir i utilitzar funcions i closures en Swift. Les funcions ens permeten encapsular blocs de codi reutilitzables, mentre que les closures ens ofereixen una manera flexible de passar codi com a arguments a altres funcions. Amb aquests coneixements, estem preparats per escriure codi més modular i eficient en Swift. En el següent mòdul, explorarem com construir interfícies d'usuari utilitzant Xcode.
Dominar Xcode: De Principiant a Avançat
Mòdul 1: Introducció a Xcode
- Començant amb Xcode
- Entenent la Interfície de Xcode
- Creant el teu Primer Projecte Xcode
- Navegació Bàsica de Xcode
Mòdul 2: Conceptes Bàsics de Swift a Xcode
- Introducció a la Programació en Swift
- Variables i Constants
- Tipus de Dades i Operadors
- Flux de Control
- Funcions i Closures
Mòdul 3: Construint Interfícies d'Usuari
- Introducció a Interface Builder
- Dissenyant amb Storyboards
- Auto Layout i Constriccions
- Utilitzant les Previsualitzacions de Xcode
- Creant Components UI Personalitzats
Mòdul 4: Treballant amb Dades
Mòdul 5: Depuració i Proves
- Conceptes Bàsics de Depuració
- Utilitzant Breakpoints
- Proves Unitàries
- Proves d'Interfície d'Usuari
- Proves de Rendiment
Mòdul 6: Funcions Avançades de Xcode
- Utilitzant Instruments per a l'Optimització del Rendiment
- Tècniques Avançades de Depuració
- Configuracions de Compilació Personalitzades
- Scripting amb Xcode
- Integració amb Sistemes d'Integració Contínua
Mòdul 7: Desplegament d'Aplicacions
- Preparant per a la Submissió a l'App Store
- Creant Captures de Pantalla per a l'App Store
- Gestionant les Metadades de l'App Store
- Enviant la teva Aplicació
- Millors Pràctiques Post-Submissió
