Sobes.tech
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.