Sobes.tech
Junior — Middle

Proqramlaşdırmada görünüş sahəsindən çıxmayan bağlamaların anlayışını izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Proqramlaşdırmada, bağlama (closure) xarici sahədən olan dəyişənlərə istinadları tutan və saxlayan funksiyadır, hətta bu sahə icrasını başa vurduqdan sonra belə. Xarici sahədən çıxmayan bağlamalar anlayışı, bağlamanın bu dəyişənlərə girişinə davam etdiyini göstərir, çünki onlar bağlama mövcud olduğu müddətdə məhv edilmir.

Məsələn, Swift-də:

func makeIncrementer(amount: Int) -> () -> Int {
    var total = 0
    return {
        total += amount
        return total
    }
}

let incrementByFive = makeIncrementer(amount: 5)
print(incrementByFive()) // 5
print(incrementByFive()) // 10

Burada, bağlama total dəyişənini saxlayır, bu dəyişən adətən makeIncrementer icrasından sonra sahədən çıxmalı idi. Amma bağlamanın köməyi ilə, total saxlanılır və hər çağırışda dəyişir.

Bu şəkildə, bağlamalar vəziyyəti saxlamağa və xarici sahələrdən olan dəyişənlərlə işləməyə imkan verir, onları tərk etmədən.