¿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.