En Kotlin, como en otros lenguajes de programación, las propiedades pueden ser mutables (modificables) o inmutables (no modificables). Para declarar una propiedad inmutable, utilizamos los términos const y val. Los desarrolladores con frecuencia están perplejos sobre cuándo utilizar una de estas frases. En este artículo, examinaremos la distinción entre const y val en Kotlin.
Uso de «const» en Kotlin
La palabra clave const se utiliza para declarar propiedades que son inmutables por naturaleza, es decir, propiedades de sólo lectura. Los valores solo se conocen en tiempo de compilación, aunque, como resultado, no se pueden asignar valores en tiempo de ejecución a las variables constantes. Para ser una propiedad const, una propiedad debe cumplir con los siguientes requisitos:
- Debe estar en el nivel superior o ser miembro de un objeto o de un objeto complementario.
- Debe comenzar desde un tipo de datos primitivo
- Sin getter personalizado Por lo tanto, no puede asignar una variable const a una función o clase porque la variable se inicializará en tiempo de ejecución en lugar de en tiempo de compilación.
Uso de «val» en Kotlin
La distinción principal entre const y val es que las propiedades de val también se pueden inicializar en tiempo de ejecución. Como resultado, puede asignar una variable val a un método o una clase.
Ejemplo:
Kotlin
const val gfgName = "Geeksforgeeks" // goes well val coursename = "Android" // goes well const val gfgName = getgfgName() // not goes well val coursename = getcoursename() // not goes well
La variable inmutable en el ejemplo anterior es gfgName. Cuando se usa const, la asignación directa del valor está bien; sin embargo, intentar asignar el valor de alguna función getgfgame resultará en un error ya que el valor se asignará en tiempo de ejecución en lugar de en tiempo de compilación. Sin embargo, en el caso de val, ambos escenarios son aceptables.
¿Por qué usar «const» cuando «val» será suficiente?
Vimos en el último ejemplo que el valor de la variable val se inicializa en tiempo de ejecución y const en tiempo de compilación. Entonces, ¿por qué usar const cuando val será suficiente? Veamos otro ejemplo de Android del mundo real para ver cómo se usan const y val:
Kotlin
GeeksforGeeksClass { companion object { const val IMAGE_EXTENSION = ".jpg" val LOGONAME: String get() = "Geeks" + System.currentTimeMillis() + IMAGE_EXTENSION } }
GeekTip: En el ejemplo anterior, declaramos el valor const IMAGE_EXTENSION en el objeto complementario e inicializamos la variable FILENAME como val usando un getter personalizado.
Debido a que la extensión del archivo siempre será la misma, se define como una variable const. Sin embargo, el nombre del archivo se modificará según la lógica que apliquemos para el nombre del archivo. En este ejemplo, estamos nombrando el archivo después de la hora actual. No puede darle un valor al principio ya que el valor se obtiene durante el tiempo de ejecución. Así que vamos a usar val aquí.
Kotlin
public final String getIMAGENAME() { return "Geeks" + System.currentTimeMillis() + ".jpg"; }
En el ejemplo anterior, declaramos el valor constante EXTENSIÓN DE ARCHIVO en el objeto complementario e inicializamos la variable NOMBRE DE ARCHIVO como val usando un captador personalizado. Debido a que la extensión del archivo siempre será la misma, se define como una variable const. Sin embargo, el nombre del archivo se modificará según la lógica que apliquemos para el nombre del archivo. En este ejemplo, estamos nombrando el archivo después de la hora actual. No puede darle un valor al principio ya que el valor se obtiene durante el tiempo de ejecución. Así que vamos a usar val aquí.
Aquí, la variable IMAGE_EXTENSION se reemplazó por su valor, «.jpg», lo que indica que el valor se ha insertado y, por lo tanto, no hay sobrecarga para acceder a esa variable en tiempo de ejecución. Este es el beneficio de usar const en lugar de val.
Veamos las diferencias en forma tabular -:
constante | valor | |
1. | Es una palabra clave que se utiliza cuando queremos que el valor de una variable permanezca constante. | Es una palabra clave que se usa para declarar una variable en kotlin. |
2. | Solo se usa para declarar una propiedad de solo lectura de una clase en kotlin. | Se inicializa en tiempo de ejecución. |
3. | Su valor se conoce en tiempo de compilación del programa. | No se puede asignar varias veces. |
4. | No podemos cambiar el valor de la variable que se declara constante. | Se puede utilizar con la palabra clave const. |
5. | Se utiliza al principio de la declaración de la variable. |
sintaxis -: var nombre_variable= valor |
Publicación traducida automáticamente
Artículo escrito por therebootedcoder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA