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.