Junior — Middle
Explicați conceptul de closures care nu ies din domeniul de vizibilitate în programare.
sobes.tech AI
Răspuns de la AI
În programare, o închidere (closure) este o funcție care capturează și păstrează referințe la variabile din domeniul extern, chiar și după ce acel domeniu și-a încheiat execuția. Conceptul de închideri care nu părăsesc domeniul înseamnă că închiderea continuă să aibă acces la aceste variabile, deoarece ele nu sunt distruse atâta timp cât închiderea există.
De exemplu, în Swift:
func makeIncrementer(amount: Int) -> () -> Int {
var total = 0
return {
total += amount
return total
}
}
let incrementByFive = makeIncrementer(amount: 5)
print(incrementByFive()) // 5
print(incrementByFive()) // 10
Aici, închiderea păstrează variabila total, care în mod normal ar fi trebuit să iasă din domeniu după executarea makeIncrementer. Dar datorită închiderii, total este păstrată și modificată la fiecare apel.
Astfel, închiderile permit păstrarea stării și lucrul cu variabile din domenii externe, fără a le părăsi.