Sobes.tech
Junior — Middle

Paaiškinkite uždarymų, kurie neišeina iš apimties programavime, koncepciją.

sobes.tech AI

Atsakymas iš AI

Programavime, uždarymas (closure) yra funkcija, kuri įsikimba ir išsaugo nuorodas į išorinės apimties kintamuosius, net ir po to, kai ši apimtis baigia savo vykdymą. Koncepcija, kad uždarymas neišeina iš apimties, reiškia, kad uždarymas toliau turi prieigą prie tų kintamųjų, nes jie nėra sunaikinami, kol uždarymas egzistuoja.

Pavyzdžiui, 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

Čia uždarymas išsaugo kintamąjį total, kuris įprastai turėtų išeiti iš apimties po makeIncrementer vykdymo. Bet dėka uždarymo, total išlieka ir keičiasi kiekvieno iškvietimo metu.

Taip uždarymai leidžia išsaugoti būseną ir dirbti su išorinių apimčių kintamaisiais, neišeinant iš jų.