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: 6Explicació:
applyOperationés una funció que accepta dos enters (aib) i una funcióoperationque pren dos enters i retorna un enter.addés una funció que suma dos enters.applyOperation(4, 2, operation: add)aplica la funcióaddals 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: 8Explicació:
- 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: 5Explicació:
makeIncrementerés una funció que accepta un enterincrementAmounti retorna una funcióincrementerque 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ó:
mapaplica una funció a cada element de l'arraynumbersi retorna un nou array amb els resultats.
filter
Explicació:
filterretorna un nou array amb els elements denumbersque compleixen la condició especificada (ser parells en aquest cas).
reduce
Explicació:
reducecombina tots els elements de l'arraynumbersen 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: 12Exercici 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: 12Resum
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
