¿Cómo trabajar con propiedades en línea en Kotlin?

En este artículo, vamos a discutir cómo trabajar con propiedades en línea en Kotlin. pero antes de eso, debe conocer algunos conceptos básicos de funciones y debe estar familiarizado con los conceptos de programación orientada a objetos. Una gran cosa acerca de Kotlin son las funciones de orden superior que nos permiten usar funciones como parámetros para otras funciones. Sin embargo, son objetos, por lo que presentan una sobrecarga de memoria (porque a cada instancia se le asigna espacio en el montón y también necesitamos métodos para llamar a las funciones). Podemos mejorar la situación usando funciones en línea. La anotación en línea significa que la función específica, junto con los parámetros de la función, se expandirá en el sitio de la llamada; esto ayuda a reducir la sobrecarga de llamadas. De manera similar, la palabra clave en línea se puede usar con propiedades y elementos de acceso a propiedades que no tienen el campo de respaldo. 

Ejemplo

Veamos cómo trabajar con propiedades en línea en estos pasos:

1. Probemos un ejemplo en el que insertamos un descriptor de acceso de propiedad en Kotlin:

Kotlin

var x. valueIsMaxedOut : Boolean
inline get () = x. value == CONST_MAX

2. En este ejemplo, solo usamos la palabra clave en línea con el descriptor de acceso get. También podemos declarar los descriptores de acceso get y set como en línea haciendo que toda la propiedad esté en línea, como se muestra en este fragmento de código:

Kotlin

inline var x. valueIsMaxedOut: Boolean 
get () = x. value == CONST_MAX 
set (value) { 
  // set field here
  printin ("Value set!")
}

En el fragmento anterior, ambos descriptores de acceso están en línea.

3. Sin embargo, una cosa a tener en cuenta es que en línea no funciona con la propiedad o el descriptor de acceso si la propiedad tiene un campo de respaldo o el asesor no hace referencia al campo de respaldo. El código aquí es un ejemplo de un escenario en el que no podemos usar inline :

Kotlin

var x. valueIsMaxedOut : Boolean = true 
get () = x. value == CONST_MAX 
set (value) {
  // set field here
  printin ("Value set!")
}

Otra cosa a tener en cuenta es que, aunque las propiedades en línea reducen la sobrecarga de llamadas al expandirse solo en el sitio de la llamada, también aumentan el código de bytes general, por lo que no se debe usar en línea con funciones o accesos grandes. 

Entonces, básicamente, usamos en línea cuando deseamos reducir la sobrecarga de memoria. Al igual que la función en línea, también podemos declarar propiedades como en línea o los descriptores de propiedades como en línea. Sin embargo, una cosa a tener en cuenta es que la inserción aumenta considerablemente el código de bytes, por lo que se sugiere no incorporar funciones o accesores que tengan una lógica de código grande.

Publicación traducida automáticamente

Artículo escrito por eralokyadav2019 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *