Middle
Cum pot captura valorile de tip value type closure-urile?
sobes.tech AI
Răspuns de la AI
Closure-urile capturează o copie a valorii de tip value în momentul definirii. Dacă valoarea de tip value se schimbă după definirea closure-ului, în interiorul closure-ului va fi disponibilă copia sa originală, nu valoarea modificată.
var counter = 0
let incrementCounter = { // Closure-ul capturează o copie a lui `counter` (0)
counter += 1
print(counter)
}
incrementCounter() // Afișează 1
counter = 10 // Schimbăm variabila originală `counter`
incrementCounter() // Afișează 2. Closure-ul lucrează cu copia capturată, nu cu variabila modificată.
Atunci când se utilizează @escaping cu closure-uri de tip value, este important să se țină cont de acest mecanism de capturare a copiei, deoarece valoarea poate fi schimbată înainte de apelarea closure-ului.