Uso de funciones en línea en Kotlin

Kailash Vaviya 15 febrero 2024
  1. Funciones en línea de Kotlin
  2. Use las funciones en línea de Kotlin con parámetros de tipo cosificados
  3. Use noinline en las funciones en línea de Kotlin
Uso de funciones en línea en 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:

Ejemplo básico de función en línea de Kotlin

Ejecutar código

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:

  1. Declaración de clase local
  2. Declaración de clase anidada interna
  3. Expresiones de función
  4. Declaraciones de funciones locales
  5. 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:

  1. Al acceder a funciones de orden superior
  2. Para mejorar la eficiencia de asignación de memoria
  3. Al pasar un parámetro de tipo funcional
  4. Para obtener un mejor flujo de control
  5. Cuando una función acepta otra función como parámetro
  6. 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:

Parámetro de tipo cosificado en las funciones en línea de Kotlin

Ejecutar código

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:

noinline Uso en funciones en línea de Kotlin

Ejecutar código

Kailash Vaviya avatar Kailash Vaviya avatar

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

Artículo relacionado - Kotlin Function