Les funcions d'ordre superior són un concepte fonamental en Swift i en molts altres llenguatges de programació moderns. Aquestes funcions poden rebre altres funcions com a paràmetres, retornar funcions com a resultat o fer ambdues coses. Això permet una gran flexibilitat i potència en la programació funcional.
Conceptes Clau
- Funcions com a Paràmetres: Passar funcions com a arguments a altres funcions.
- Funcions com a Valors de Retorn: Retornar funcions des d'altres funcions.
- Closures: Utilitzar closures com a funcions d'ordre superior.
Funcions com a Paràmetres
Exemple 1: Funció que Accepta una Funció com a Paràmetre
func applyOperation(_ a: Int, _ b: Int, operation: (Int, Int) -> Int) -> Int { return operation(a, b) } func add(_ x: Int, _ y: Int) -> Int { return x + y } let result = applyOperation(4, 2, operation: add) print(result) // Sortida: 6
Explicació:
applyOperation
és una funció que accepta dos enters (a
ib
) i una funcióoperation
que pren dos enters i retorna un enter.add
és una funció que suma dos enters.applyOperation(4, 2, operation: add)
aplica la funcióadd
als valors 4 i 2.
Exemple 2: Utilitzant Closures com a Paràmetres
let result = applyOperation(4, 2, operation: { (x: Int, y: Int) -> Int in return x * y }) print(result) // Sortida: 8
Explicació:
- En lloc de passar una funció definida prèviament, es passa una closure que multiplica dos enters.
Funcions com a Valors de Retorn
Exemple 3: Funció que Retorna una Funció
func makeIncrementer(incrementAmount: Int) -> (Int) -> Int { func incrementer(number: Int) -> Int { return number + incrementAmount } return incrementer } let incrementByTwo = makeIncrementer(incrementAmount: 2) print(incrementByTwo(3)) // Sortida: 5
Explicació:
makeIncrementer
és una funció que accepta un enterincrementAmount
i retorna una funcióincrementer
que incrementa un nombre pel valor deincrementAmount
.incrementByTwo
és una funció que incrementa qualsevol nombre per 2.
Funcions d'Ordre Superior en Acció
Exemple 4: Utilitzant Funcions d'Ordre Superior amb Arrays
Swift proporciona diverses funcions d'ordre superior per treballar amb arrays, com ara map
, filter
i reduce
.
map
let numbers = [1, 2, 3, 4, 5] let squaredNumbers = numbers.map { $0 * $0 } print(squaredNumbers) // Sortida: [1, 4, 9, 16, 25]
Explicació:
map
aplica una funció a cada element de l'arraynumbers
i retorna un nou array amb els resultats.
filter
Explicació:
filter
retorna un nou array amb els elements denumbers
que compleixen la condició especificada (ser parells en aquest cas).
reduce
Explicació:
reduce
combina tots els elements de l'arraynumbers
en un sol valor, en aquest cas, la suma de tots els elements.
Exercicis Pràctics
Exercici 1: Funció que Accepta una Funció com a Paràmetre
Escriu una funció applyTwice
que accepti una funció i un valor, i apliqui la funció al valor dues vegades.
func applyTwice(_ value: Int, operation: (Int) -> Int) -> Int { return operation(operation(value)) } // Solució func double(_ x: Int) -> Int { return x * 2 } let result = applyTwice(3, operation: double) print(result) // Sortida esperada: 12
Exercici 2: Funció que Retorna una Funció
Escriu una funció makeMultiplier
que accepti un enter multiplier
i retorni una funció que multipliqui un nombre pel multiplier
.
func makeMultiplier(multiplier: Int) -> (Int) -> Int { return { $0 * multiplier } } // Solució let multiplyByThree = makeMultiplier(multiplier: 3) print(multiplyByThree(4)) // Sortida esperada: 12
Resum
En aquesta secció, hem après sobre les funcions d'ordre superior en Swift, incloent com passar funcions com a paràmetres, retornar funcions i utilitzar closures. També hem vist com utilitzar funcions d'ordre superior amb arrays mitjançant map
, filter
i reduce
. Els exercicis pràctics proporcionats ajuden a reforçar aquests conceptes clau.
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