Sobes.tech
Junior — Middle

¿Qué consecuencias ocurren si una variable de tipo value, capturada en un cierre, se modifica y ese cierre se llama nuevamente?

sobes.tech AI

Respuesta de la IA

En Swift, si una variable de tipo valor (por ejemplo, una estructura o un primitivo) se captura en un cierre, el cierre obtiene una copia de esa variable en el momento de su creación. Si después de crear el cierre la variable original cambia, la llamada posterior al cierre usará exactamente esa copia que fue capturada inicialmente, y no el valor actualizado.

Esto significa que los cambios en la variable fuera del cierre no afectan al valor ya capturado dentro del cierre.

Ejemplo:

var x = 10
let closure = { print(x) }
x = 20
closure() // Imprimirá 10, no 20

Por lo tanto, si quieres que el cierre vea el valor actual de la variable, debes capturarla por referencia (por ejemplo, usando una clase o parámetros inout), o crear un nuevo cierre después de modificar la variable.