Avatar ·

¿Cuál es la diferencia entre const y val en Kotlin? Explicación detallada para principiantes

¡Hola a todos! Empecé a estudiar Kotlin recientemente y me encontré con confusión. En el código de otros desarrolladores veo dos palabras clave similares: `const` y `val`. A primera vista hacen lo mismo: declarar una variable inmutable. Pero siento que hay alguna diferencia entre ellas, de lo contrario, ¿por qué existirían ambas? Aquí hay un ejemplo que me confunde: ```kotlin val pi = 3.14159 const val PI = 3.14159 ``` Entiendo que ambas opciones no me permitirán cambiar el valor después de la inicialización. Pero entonces, ¿por qué en un caso escribo `const val` y en el otro simplemente `val`? El compilador se queja si intento usar `const` dentro de una función. ¿Por qué? También noté que `const` solo se puede usar con tipos primitivos y strings. Mientras que `val` funciona con cualquier objeto. Pero entonces, ¿para qué sirve `const` si `val` hace todo lo mismo? Explíquenme, por favor, de manera sencilla, en qué se diferencian y en qué situaciones usar cada uno. Me interesa especialmente cómo afecta esto al rendimiento.