¡Hola! Acabo de empezar a aprender Swift y no logro entender la diferencia entre `let` y `var`. Parece que ambos se usan para declarar variables, pero noté que Xcode a veces se queja si uso la palabra incorrecta.
Por ejemplo, escribí este código:
```swift
var name = "Iván"
name = "Pedro" // funciona
let age = 25
age = 30 // error: Cannot assign to value: 'age' is a 'let' constant
```
¿Por qué en el primer caso todo está bien y en el segundo hay error? Pensaba que `let` y `var` eran lo mismo. ¿Quizás `let` no se puede cambiar? Pero entonces, ¿para qué sirve?
También noté que en ejemplos de internet a menudo usan `let` para arrays y diccionarios, pero luego agregan elementos. ¿Cómo funciona eso? ¿Acaso `let` no prohíbe cambios?
Explíquenme, por favor, en palabras simples, cuándo usar `let` y cuándo `var`. ¿Y qué pasa si siempre escribo `var`? ¿Es una mala práctica?
¡Gracias de antemano!
<<
>>
Diferencia clave: mutabilidad
En Swift, `let` declara una constante (no se puede reasignar), mientras que `var` declara una variable (sí se puede reasignar). En tu ejemplo, `age` es una constante, por eso no puedes cambiar su valor. Para arrays y diccionarios con `let`, no puedes reemplazar la colección completa, pero sí puedes modificar su contenido (agregar, eliminar o cambiar elementos) si la colección es un struct con métodos mutantes. Usar `var` siempre es posible, pero es mala práctica porque hace el código menos seguro y predecible; se recomienda usar `let` por defecto y solo usar `var` cuando necesites reasignación.