Uso de funciones en línea en Kotlin
-
Funciones
en líneade Kotlin -
Use las funciones
en líneade Kotlin con parámetros de tipo cosificados -
Use
noinlineen las funcionesen líneade 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