En este tutorial aprenderás a como declarar de funciones en Kotlin para ejecutar conjuntos de sentencias como unidad.
¿Qué Es Una Función?
Kotlin es un lenguaje que te permite aplicar estilos de programación funcional en tus aplicaciones. Por ello la función es una herramienta indispensable.
Una función es un conjunto de instrucciones que realizan una tarea específica, empaquetadas como unidad.
Esta puede ser llamada en el lugar donde sea que la necesites para ejecutar las sentencias.
Sintaxis De Declaración
El siguiente ejemplo muestra la sintaxis de declaración de una función en Kotlin:
fun square(x: Int): Int {
return x * x
}
La anterior función eleva al cuadrado un parámetro entero.
La declaración comienza con la palabra clave fun
y se conforma de:
- Nombre de la función − Es el nombre que eliges para la función con el fin de esclarecer su propósito
- Lista de parámetros − Datos de entrada para la función. Defínelos como
nombre:tipo
y sepáralos por comas. - Tipo de retorno − Tipo de dato de salida de la función. Una función con un cuerpo de bloque de código, siempre debe tener su tipo definido.
- Cuerpo de la función – Son todas las sentencias que realizan la tarea para llegar al resultado final de retorno. Usa la expresión
return
para devolver el valor.
Llamar Una Función
La forma de invocar a una función es escribir el nombre en el punto del flujo donde requieras ejecutar las instrucciones y pasarle los argumentos con que se declaró.
Por ejemplo, llama la anterior función así:
fun square(x: Int): Int {
return x * x
}
fun main() {
print(square(2))
}
Al ejecutar el programa la salida será 4
.
Funciones Con Cuerpo De Expresión
Si tu función retorna tan solo una expresión, puedes reducir su sintaxis a una función con cuerpo de expresión. Donde la expresión es ubicada luego del signo =
en línea con la firma de la función.
Por ejemplo:
Determinar el resultado del modelo matemático f(x,y,z) = 3x-2y+z2
en el punto A=(1,0,5)
:
fun model(x: Int, y: Int, z: Int) = 3 * x - 2 * y + z * z
fun main() {
println("f(1,0,5)= ${model(1, 0, 5)}")
}
El modelo matemático comprende tres variables de entrada, por lo que esos serán el número de parámetros. En la misma línea, construimos la ecuación con operadores aritméticos y así llamarla desde main()
con los valores propuestos.
El resultado sería:
f(1,0,5)= 28
La declaración con cuerpo de expresión única, permite que el compilador infiera el tipo y así poder omitirlo de la función.
Por otro lado, IntelliJ IDEA puede hacer la conversión a single-expression body por ti, si despliegas las acciones emergentes en la función.
Retorno Tipo Unit
Unit
es la palabra reservada análoga a void
en Java. Esto determina que una función no retorna valor.
Ejemplo: Crear una función que imprima si un carácter es una vocal o no.
fun isVowel(c: Char): Unit {
when (c) {
'a', 'e', 'i', 'o', 'u' -> println("$c es una vocal")
else -> println("$c no es una vocal")
}
}
fun main() {
isVowel('v')
}
La solución propuesta, usa una expresión when para comprobar si el parámetro de tipo Char
coincide con las vocales.
Sin embargo, como no deseamos retornar un valor significativo hacia el exterior, usamos como tipo de retorno Unit
.
La salida del programa sería:
v no es una vocal
Omitir tipo Unit − Aunque el compilador de Kotlin no puede realizar inferencias de tipos con funciones con cuerpo de bloques de código, el tipo Unit
es una excepción, es posible omitirlo de la declaración debido a su naturaleza.
La anterior función la puedes reescribir sin él:
fun isVowel2(c: Char) {
when (c) {
'a', 'e', 'i', 'o', 'u' -> println("$c es una vocal")
else -> println("$c no es una vocal")
}
}
¿Qué Sigue?
Ya has visto como declarar y llamar funciones en Kotlin. Para extender más el conocimiento sobre ellas, ve al tutorial sobre argumentos por defecto y nombrados.
Únete Al Discord De Develou
Si tienes problemas con el código de este tutorial, preguntas, recomendaciones o solo deseas discutir sobre desarrollo Android conmigo y otros desarrolladores, únete a la comunidad de Discord de Develou y siéntete libre de participar como gustes. ¡Te espero!