Las funciones de orden superior son un concepto fundamental en Swift y en muchos otros lenguajes de programación funcional. Una función de orden superior es una función que puede hacer al menos una de las siguientes cosas:
- Tomar una o más funciones como parámetros.
- Devolver una función como resultado.
Este concepto permite escribir código más modular y reutilizable. En esta sección, exploraremos cómo definir y utilizar funciones de orden superior en Swift.
Conceptos Clave
- Funciones como Parámetros
En Swift, puedes pasar funciones como parámetros a otras funciones. Esto es útil para crear funciones genéricas que pueden realizar operaciones específicas basadas en la función que se les pasa.
- Funciones que Devuelven Funciones
También puedes definir funciones que devuelven otras funciones. Esto es útil para crear funciones que generan otras funciones basadas en ciertos parámetros.
- Closures
Los closures son bloques de código que pueden ser capturados y utilizados posteriormente. Son una forma común de pasar funciones como parámetros en Swift.
Ejemplos Prácticos
Funciones como Parámetros
Vamos a definir una función que toma otra función como parámetro. Esta función aplicará la función pasada a cada elemento de un array.
func applyFunctionToArray(array: [Int], function: (Int) -> Int) -> [Int] {
var result: [Int] = []
for item in array {
result.append(function(item))
}
return result
}
// Ejemplo de uso
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = applyFunctionToArray(array: numbers) { $0 * $0 }
print(squaredNumbers) // [1, 4, 9, 16, 25]En este ejemplo, applyFunctionToArray toma un array de enteros y una función que toma un entero y devuelve un entero. Luego aplica esa función a cada elemento del array.
Funciones que Devuelven Funciones
Ahora, vamos a definir una función que devuelve otra función. Esta función generará una función que suma un número específico a su argumento.
func makeAdder(x: Int) -> (Int) -> Int {
return { y in
return x + y
}
}
// Ejemplo de uso
let addFive = makeAdder(x: 5)
let result = addFive(10)
print(result) // 15En este ejemplo, makeAdder toma un entero x y devuelve una función que toma otro entero y y devuelve la suma de x y y.
Closures
Los closures son una forma concisa de definir funciones en Swift. Aquí hay un ejemplo de cómo usar un closure como parámetro de una función.
let numbers = [1, 2, 3, 4, 5]
let doubledNumbers = numbers.map { $0 * 2 }
print(doubledNumbers) // [2, 4, 6, 8, 10]En este ejemplo, usamos el método map del array, que toma un closure como parámetro. El closure toma un elemento del array y devuelve el doble de ese elemento.
Ejercicios Prácticos
Ejercicio 1: Filtrar Números Pares
Escribe una función de orden superior llamada filterArray que tome un array de enteros y un closure que determine si un número debe ser incluido en el array resultante. Usa esta función para filtrar los números pares de un array.
func filterArray(array: [Int], condition: (Int) -> Bool) -> [Int] {
var result: [Int] = []
for item in array {
if condition(item) {
result.append(item)
}
}
return result
}
// Ejemplo de uso
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let evenNumbers = filterArray(array: numbers) { $0 % 2 == 0 }
print(evenNumbers) // [2, 4, 6, 8, 10]Ejercicio 2: Crear una Función Multiplicadora
Escribe una función llamada makeMultiplier que tome un entero x y devuelva una función que multiplique su argumento por x.
func makeMultiplier(x: Int) -> (Int) -> Int {
return { y in
return x * y
}
}
// Ejemplo de uso
let multiplyByThree = makeMultiplier(x: 3)
let result = multiplyByThree(10)
print(result) // 30Resumen
En esta sección, hemos aprendido sobre las funciones de orden superior en Swift. Hemos visto cómo pasar funciones como parámetros, cómo devolver funciones desde otras funciones y cómo usar closures. Estos conceptos son fundamentales para escribir código más modular y reutilizable. Asegúrate de practicar estos conceptos con los ejercicios proporcionados para reforzar tu comprensión.
Curso de Programación en Swift
Módulo 1: Introducción a Swift
- Introducción a Swift
- Configuración del Entorno de Desarrollo
- Tu Primer Programa en Swift
- Sintaxis y Estructura Básica
- Variables y Constantes
- Tipos de Datos
Módulo 2: Control de Flujo
Módulo 3: Funciones y Closures
- Definición y Llamada de Funciones
- Parámetros de Función y Valores de Retorno
- Closures
- Funciones de Orden Superior
Módulo 4: Programación Orientada a Objetos
Módulo 5: Swift Avanzado
Módulo 6: Swift y Desarrollo de iOS
- Introducción al Desarrollo de iOS
- Fundamentos de UIKit
- Storyboards y Interface Builder
- Redes en Swift
- Core Data
- Fundamentos de SwiftUI
