Sobes.tech
Junior — Middle

Cum afectează utilizarea unei variabile în interiorul unei închideri și apelarea ulterioară a acestei închideri după modificarea valorii sale valoarea finală a variabilei counter?

sobes.tech AI

Răspuns de la AI

Dacă o variabilă counter este utilizată în interiorul unei închideri, comportamentul depinde de modul în care închiderea capturează această variabilă:

  • În Swift, închiderile capturează variabilele prin referință dacă sunt declarate ca var. Aceasta înseamnă că dacă după crearea închiderii valoarea lui counter se schimbă, la apelarea închiderii se va folosi valoarea actuală.

Exemplu:

var counter = 0
let closure = {
    print(counter)
}
counter = 5
closure() // Va afișa 5
  • Dacă variabila a fost capturată ca o constantă (de exemplu, prin let în interiorul închiderii sau dacă închiderea copiază explicit valoarea), atunci schimbarea în afara închiderii nu va afecta valoarea din interior.

Prin urmare, utilizând o variabilă în interiorul unei închideri și modificând ulterior valoarea acesteia, valoarea finală la apel va reflecta starea curentă a variabilei dacă a fost capturată prin referință.