En este tutorial discutiremos sobre el alcance de funciones en Kotlin y cómo puedes declararlas en nivel superior, a nivel de clase y a nivel local.
Funciones De Nivel Superior
Las funciones de nivel superior pueden ser ejecutadas desde cualquier parte del proyecto. Estas son declaradas en un archivo Kotlin sin necesidad de una clase explicita que las contenga.
Por ejemplo:
Crea un nuevo proyecto en IntelliJ IDEA.
Añade un nuevo archivo Kotlin llamado TopLevelPrint.kt
. Declara una función de nivel superior que imprima el mensaje «Función de nivel superior».
fun topLevelPrint() = println("Función de nivel superior")
Crea un segundo archivo Kotlin llamado FunctionScope.kt
y ejecuta desde la función main()
la función topLevelPrint()
.
fun main(){
topLevelPrint()
}
El resultado sería la impresión de la cadena:
Función de nivel superior
Con este ejemplo puedes evidenciar el alcance de nivel superior de la función y como desde otro archivo es posible ver su existencia.
Funciones Miembro
Son funciones que se declaran a nivel de una clase u objeto. Esto quiere decir, que se reduce la visibilidad de la función a la clase que pertenezca.
Por ejemplo:
Declara una clase llamada Print
en FunctionScope.kt
. Defínele un método que imprima el mensaje «Función miembro».
Luego, crea una instancia de la misma en main()
y llama a su método a través de la notación instancia.metodo()
.
class Print{
fun memberPrint() = println("Función miembro")
}
fun main(){
Print().memberPrint()
}
El resultado en consola sería:
Función miembro
Funciones Locales
Una función local es aquella que se declara dentro de otra. Esto quiere decir que solo puede ser llamada desde la función contenedora.
Prosiguiendo con nuestro ejemplo.
Declara una función de una sola expresión llamada localPrint()
al interior de main()
en FunctionScope.kt
. Su objetivo será imprimir el mensaje «Función local». Ejecútala inmediatamente luego de su declaración.
fun main(){
fun localPrint()= println("Función local")
localPrint()
}
Como salida tendrás:
Función local