Avatar ·

¿Cuál es la diferencia entre let y var en Swift?

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