Sobes.tech
Junior — Middle

Magyarázza el a programozásban a nem kilépő zárványok fogalmát.

sobes.tech MI

Válasz az MI-től

A programozásban a zár (closure) egy olyan függvény, amely elfogja és megőrzi a külső láthatósági területről származó változók hivatkozásait, még akkor is, ha ez a terület befejezte a végrehajtását. A nem kilépő zárak fogalma azt jelenti, hogy a zár továbbra is hozzáfér ezekhez a változókhoz, mivel azok nem törlődnek, amíg a zár létezik.

Például Swift-ben:

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

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

Itt a zár megőrzi a total változót, amely normál esetben kilépne a láthatósági területről a makeIncrementer végrehajtása után. De a zárnak köszönhetően a total megmarad és minden hívásnál módosul.

Így a zárak lehetővé teszik az állapot megőrzését és a külső láthatósági területekről származó változókkal való munkát anélkül, hogy kilépnének azokból.