0Pricing
Swift Academy · Lección

Funciones como valores de primera clase

Almacene funciones en variables, páselas como argumentos y devuélvalas desde otras funciones.

Funciones como valores de primera clase es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Bienvenida

En Swift, las funciones son valores de primera clase: puede almacenarlas en variables, pasarlas como argumentos, devolverlas desde otras funciones y anidarlas dentro de otras funciones.

Tipos de función

Cada función tiene un tipo definido por sus tipos de parámetros y de retorno: ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } let operation: (Int, Int) -> Int = add print(operation(3, 4)) // 7 ``` El tipo de `add` es `(Int, Int) -> Int`.

Pasar funciones como argumentos

```swift func apply(_ f: (Int) -> Int, to value: Int) -> Int { f(value) } func double(_ n: Int) -> Int { n * 2 } print(apply(double, to: 5)) // 10 ``` Esta es la base de las funciones de orden superior, como `map` y `filter`.

Devolver funciones

```swift func multiplier(by factor: Int) -> (Int) -> Int { return { value in value * factor } } let triple = multiplier(by: 3) print(triple(7)) // 21 ``` Devolver una función crea una *closure* que captura `factor`.

Funciones anidadas

Las funciones se pueden definir dentro de otras funciones: ```swift func chooseStep(goForward: Bool) -> (Int) -> Int { func forward(_ n: Int) -> Int { n + 1 } func backward(_ n: Int) -> Int { n - 1 } return goForward ? forward : backward } let step = chooseStep(goForward: true) print(step(3)) // 4 ```

Closures como abreviatura

Los literales de closure anónimos pueden sustituir a cualquier tipo de función: ```swift let square: (Int) -> Int = { $0 * $0 } print(square(6)) // 36 let doubled = [1, 2, 3].map { $0 * 2 } // [2, 4, 6] ``` `$0` hace referencia al primer argumento en la forma abreviada de una closure.

Almacenar funciones en colecciones

```swift let operations: [(Int, Int) -> Int] = [ { $0 + $1 }, { $0 - $1 }, { $0 * $1 } ] for op in operations { print(op(10, 3)) } // 13, 7, 30 ```

Sintaxis de closure final

Cuando el último argumento es una función, puede escribirlo fuera de los paréntesis: ```swift func withLogging(_ label: String, action: () -> Void) { print("Start: \(label)") action() print("End: \(label)") } withLogging("fetch") { fetchData() } ```

Identidad e igualdad de funciones

No puede comparar dos valores de función con `==` en Swift: las funciones no conforman a Equatable: ```swift // let same = add == add ❌ ``` Si necesita compararlas, envuelva la función en una estructura o clase que conforme a Equatable.

Patrón de currificación

Simule la currificación devolviendo funciones parcialmente aplicadas: ```swift func add(_ a: Int) -> (Int) -> Int { { b in a + b } } let add5 = add(5) print(add5(3)) // 8 print(add5(10)) // 15 ``` Resulta útil para crear funciones especializadas a partir de funciones genéricas.

Comprobación rápida

¿Cuál es el tipo de función de una función que recibe dos `Int` y devuelve un `Int`?

Resumen

Puntos clave: • Las funciones tienen tipos como `(ParamTypes) -> ReturnType` • Puede almacenarlas en variables, pasarlas como argumentos y devolverlas desde funciones • Las closures (`{ }`) son valores de función anónimos • La sintaxis de closure final simplifica los sitios de llamada • Devolver funciones desde otras funciones crea closures que capturan variables Siguiente: la lección sobre el encadenamiento y el desempaquetado de opcionales.

Preguntas frecuentes

¿La lección «Funciones como valores de primera clase» es gratis?

Sí — el texto completo de «Funciones como valores de primera clase» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Funciones como valores de primera clase»?

Almacene funciones en variables, páselas como argumentos y devuélvalas desde otras funciones. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Funciones como valores de primera clase»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Etiquetas de argumentos y nombres de parámetros
  2. Parámetros predeterminados y variádicos
  3. Parámetros in-out y múltiples valores de retorno
  4. Funciones como valores de primera clase
← Volver a Swift Academy