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: 8
Closures 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: 7
Exercici 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ó