Hasta ahora hemos tocado varios puntos importantes que debes conocer antes de aventurarte al uso de las funciones, ya que las funciones estructuralmente están compuestas de todos los elementos que vimos anteriormente:
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:
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 cónsola 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.
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) {
}
Y desde la invocación:
hola_mundo("Mi primera función con Swift");
Pero si hacemos esto nos dará un error como podemos ver en la siguiente imagen:
![Error al invocar función Swift](/public/images/example/swift/hola_mundo_error.png)
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](/public/images/example/swift/ejecutar_funcion_hola_mundo.png)
Valores por defectos para los parámetros de las funciones
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](/public/images/example/swift/hola_mundo_valor_defecto.png)
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](/public/images/example/swift/hola_mundo_concatenacion.png)
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()
Valores de retorno de las funciones: sumar dos números 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](/public/images/example/swift/hola_mundo_interpolacion.png)
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](/public/images/example/swift/suma_parametros.png)
En nuestra función de suma de dos valores, vemos el siguiente resultado:
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](/public/images/example/swift/suma_retorno.png)
![Andrés Cruz Andrés Cruz](/public/images/perfil.jpg)
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter