Uso de funciones en línea en Kotlin
-
Funciones
en línea
de Kotlin -
Use las funciones
en línea
de Kotlin con parámetros de tipo cosificados -
Use
noinline
en las funcionesen línea
de Kotlin
La mayoría de los proyectos de Kotlin usan funciones de orden superior, lo que puede ser problemático para sus proyectos de Kotlin. Cada función de orden superior es un objeto de una clase y, por lo tanto, necesita un cierre.
Significa que las funciones de orden superior requieren asignaciones de memoria cada vez que se las llama. Por lo tanto, cada llamada de una función de alto orden conduce a una sobrecarga de tiempo de ejecución.
Kotlin proporciona funciones en línea
para superar este problema. Este artículo presenta el concepto de las funciones en línea
de Kotlin y cuándo podemos usarlas para mejorar la eficiencia de la memoria.
Funciones en línea
de Kotlin
Las funciones en línea
de Kotlin se declaran usando la palabra clave en línea
. Necesitamos escribir la palabra clave justo antes de declarar la función.
El uso de las funciones en línea
de Kotlin mejora la eficiencia de la memoria de las funciones de orden superior. Cuando usamos funciones en línea
, le dicen al compilador que copie el código de la función en el sitio de la llamada, evitando la asignación de memoria.
Aquí hay un ejemplo básico de la función en línea
de Kotlin.
fun main(args: Array<String>) {
exampleFunc({ println("This function will call our inline function")})
}
inline fun exampleFunc(Func: () -> Unit ) {
Func()
print("This is an inline function call and doesn't require memory allocation")
}
Producción:
Cuándo no usar las funciones en línea
Si bien las funciones en línea
ofrecen una excelente manera de hacer que las funciones superiores sean más eficientes, existen algunas declaraciones y escenarios que no admiten su uso, que incluyen:
- Declaración de clase local
- Declaración de clase anidada interna
- Expresiones de función
- Declaraciones de funciones locales
- Valor por defecto de los parámetros opcionales
Mejores escenarios para usar funciones en línea
Las funciones en línea
no son útiles en todas las situaciones. Estos son los mejores escenarios para usar las funciones en línea
de Kotlin:
- Al acceder a funciones de orden superior
- Para mejorar la eficiencia de asignación de memoria
- Al pasar un parámetro de tipo funcional
- Para obtener un mejor flujo de control
- Cuando una función acepta otra función como parámetro
- Cuando una función acepta lambda como parámetro
Use las funciones en línea
de Kotlin con parámetros de tipo cosificados
Podemos usar las funciones en línea
de Kotlin para acceder y recuperar el tipo de datos del parámetro pasado durante la llamada. Podemos hacer eso usando el modificador reificado
.
fun main(args: Array<String>) {
exampleFunction<String>()
}
inline fun <reified S> exampleFunction() {
print(S::class)
}
Producción:
Use noinline
en las funciones en línea
de Kotlin
Cuando declaramos una función en línea
, todos sus parámetros se vuelven en línea
. Sin embargo, si queremos que solo algunos parámetros sean inline
, podemos usar el modificador noinline
.
Todas las expresiones delante de las cuales usamos el modificador noinline
no estarán en línea.
Considere este ejemplo para comprender el uso de noinline
en las funciones inline
de Kotlin.
fun main(args: Array<String>){
println("Start")
inlineFuncExample({ println("This is the first expression/parameter")
return }, // This will not throw an error as it is an inline expression
{ println("This is the first expression/parameter")
return } ) // This will throw an error as it is not an inline expression
println("End")
}
inline fun inlineFuncExample( para1: () -> Unit, noinline para2: () -> Unit ) {
para1()
para2()
}
Producción:
Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.
LinkedIn