Swift desde Cero. Las funciones en Swift y ejemplos de su uso

Video thumbnail

Cuando empiezas a programar en Swift, uno de los primeros conceptos que debes dominar son las funciones. No solo porque aparecen en todos los ejemplos, sino porque son la base para escribir código limpio, reutilizable y fácil de mantener.

En mi caso, antes de llegar a Swift ya había trabajado con otros lenguajes, y eso me ayudó a entender rápido la idea general… pero también me hizo chocar con algunas diferencias importantes que Swift tiene frente a otros lenguajes como Kotlin. Justo esas diferencias son las que suelen generar más errores al principio.

¿Qué es una función en Swift y para qué sirve?

Una función en Swift es un bloque de código que realiza una tarea específica y que puedes reutilizar todas las veces que quieras. En lugar de repetir las mismas instrucciones una y otra vez, encapsulas esa lógica en una función y simplemente la llamas cuando la necesites.

Por qué las funciones evitan código repetido

Sin funciones, cualquier acción que se repita terminaría copiándose y pegándose en distintos lugares del código. Esto no solo hace el código más largo, sino también más difícil de mantener. Si algo cambia, tendrías que corregirlo en muchos sitios distintos.

Las funciones solucionan este problema al centralizar la lógica en un solo lugar.

Diferencias clave entre funciones en Swift y Kotlin

Mientras que en Kotlin defines funciones con la palabra reservada fun, en Swift se utiliza func. Es un detalle pequeño, pero suficiente para equivocarte las primeras veces si vienes de otro lenguaje.

Las funciones son piezas de código que hacen algo, una tarea en particular; a diferencia de Kotlin, en donde definimos una función con la palabra reservada fun en Swift creamos una función con func; es decir, le colocamos una 'c' más a nuestra palabra reservada que hace mención a la definición de una función en Swift.

Cómo declarar una función en Swift paso a paso

La palabra clave func y su sintaxis básica

La forma más simple de declarar una función en Swift es esta:

func hola_mundo() {
}

Como ves, en las líneas anteriores definimos nuestra primera función en Switf, en donde el cuerpo de la función se encuentra definida por el contenido que engloba las llaves {} que en este ejemplo es una simple impresión; para llamar o ejecutar a la función debemos de hacer la siguiente operación:

hola_mundo() 

Aunque para nuestro ejemplo, que es realmente poco emocionante no hace nada, en la consola no veras ninguna respuesta que provenga de esta función debido a que de momento es una función que no tiene definida nada en su cuerpo o estructura.

  • func indica que estás definiendo una función.
  • hola_mundo es el nombre de la función.
  • Los paréntesis () indican que no recibe parámetros.
  • Las llaves {} contienen el cuerpo de la función.

En uno de mis primeros ejemplos, dejé la función completamente vacía, y al ejecutarla no pasó absolutamente nada. Eso me ayudó a entender que definir una función no la ejecuta automáticamente.

El cuerpo de la función y las llaves {}

Todo lo que esté dentro de las llaves es lo que se ejecutará cuando la función sea llamada. Por ejemplo:

func hola_mundo() {
   print("Hola mundo")
}

Pase de parámetros en las funciones en Swift

El formato anterior es lo más simple que podemos hacer para ejecutar una función, la misma también puede recibir lo que se conoce como parámetros que en esencia es una definición de una variable indicando el tipo de dato:

func hola_mundo(name:String) {

}

Cómo ejecutar una función en Swift

Una vez definida la función, ejecutarla es tan simple como escribir su nombre seguido de paréntesis:

hola_mundo()

Si olvidas este paso, la función simplemente nunca se ejecuta. Esto parece obvio, pero cuando estás empezando es fácil pensar que el código “ya debería hacer algo” solo por estar escrito.

Y con parámetro:

hola_mundo("Mi primera función con Swift");

Labels en Swift: qué son y por qué son obligatorios

A diferencia de Kotlin, donde esto es opcional, en Swift los labels forman parte del diseño del lenguaje. Esto hace que el código sea más legible, pero al principio desconcierta bastante.

Pero si hacemos esto nos dará un error como podemos ver en la siguiente imagen:

Error al invocar función Swift

Ya que tenemos que especificar lo que sería el label antes de colocar nuestro valor, es decir, el nombre del parámetro de la función:

func hola_mundo(name:String) {
    print(name)
}

hola_mundo(name:"Mi primera función con Swift");

Esto es una diferencia importante que tiene Swift con Kotlin, ya que en este último especificar el label o nombre del parámetro de una función es completamente opcional.

Además de esto, vamos a agregar una impresión por consola para ver nuestro mensaje:

Ejecutar función y respuesta por consola

Errores comunes al pasar parámetros

  • Olvidar el label del parámetro.
  • Usar un tipo de dato incorrecto.
  • Confundir el nombre del parámetro con el valor que se pasa.

Todos estos errores son normales cuando empiezas, y casi siempre están relacionados con no respetar la sintaxis exacta que Swift espera.

Valores por defectos para los parámetros

También podemos establecer lo que sería valores por defectos en los parámetros de las funciones; para ello empleamos la siguiente sintaxis:

func hola_mundo(name:String = "Andres") {
    print(name)
}

hola_mundo()

Como puedes ver, ahora el pase de parámetros es opcional:

Pase de parámetro opcional en Swift

Y vamos a ir un poco más allá y vamos a concatenar un texto completo en nuestra impresión:

Pase de parámetro opcional en Swift y concatenación

También recuerda que podemos interpolar los textos, como explicamos en la entrada anterior de Swift:

func hola_mundo(name:String = "Andres") {
    print("Hola \(name) como estas?")
}

hola_mundo()

Funciones que retornan valores en Swift

Por supuesto, como toda función en Swift podemos indicar un valor de retorno, para eso empleamos la función de flecha seguido del tipo de dato a retornar; y por supuesto, el típico return con el valor devuelto:

Hola mundo con interpolación de textos

Además de ejecutar acciones, una función puede retornar un valor. Para ello se utiliza la flecha -> seguida del tipo de dato que se devolverá.

func suma(a: Int, b: Int = 5) -> Int {
   return a + b
}

Aquí la función devuelve un Int.

Ejemplo práctico: sumar valores y mostrar el resultado

func suma(a:Int, b:Int = 5) -> Int {
    return a + b
}

let a = 4
let b = 4

suma(a:a,b:b)
Suma de parámetros en función

Swift es extremadamente explícito: todo debe estar bien definido, desde los tipos hasta el valor que retorna la función.

Y para mostrar un ejemplo un poco más completo, te presentamos la misma función anterior pero con interpolación de String o cadenas de texto:

func suma(a:Int, b:Int = 5) -> Int {
    return a + b
}

let a = 4
let b = 4

print(" Suma de \(a) + \(b) = \()");
Suma de parámetros en función e interpolación

Buenas prácticas al trabajar con funciones en Swift

  • Usa nombres claros y descriptivos
    • El nombre de una función debe explicar exactamente qué hace. Esto es aún más importante en Swift, donde los labels hacen que las funciones se lean casi como frases.
  • Evita funciones demasiado grandes
    • Si una función empieza a crecer demasiado, probablemente esté haciendo más de una cosa. En ese punto, conviene dividirla en funciones más pequeñas y específicas.
    • Este hábito no solo mejora el código, sino que facilita mucho el debugging cuando algo no funciona como esperabas.

Conclusión

Las funciones en Swift son una pieza fundamental del lenguaje. Aunque su sintaxis puede parecer estricta al principio —especialmente con los labels y los tipos—, esa misma rigidez es la que permite escribir código más claro, seguro y mantenible.

Si vienes de otro lenguaje, es normal cometer errores al inicio. Lo importante es entender por qué Swift funciona así y aprovechar esas reglas en tu favor.

Ahora, aprende el uso de los condicionales en Swift.

Acepto recibir anuncios de interes sobre este Blog.

Explicamos el uso de las funciones en Swift, pase de parámetros, valores por defectos, retorno de datos; fundamental para crear aplicaciones para iOS.

| 👤 Andrés Cruz

🇺🇸 In english