Junior — Middle
What are the consequences if a variable of type value, captured in a closure, is changed, and this closure is called again?
sobes.tech AI
Answer from AI
In Swift, if a variable with a value type (e.g., struct or primitive) is captured in a closure, the closure receives a copy of that variable at the moment of creation. If the original variable is modified after the closure is created, subsequent calls to the closure will use the initially captured copy, not the updated value.
This means that changes to the variable outside the closure do not affect the value already captured inside the closure.
Example:
var x = 10
let closure = { print(x) }
x = 20
closure() // Will print 10, not 20
Therefore, if you want the closure to see the current value of the variable, you need to capture it by reference (for example, using a class or inout parameters), or create a new closure after the variable has changed.