Sobes.tech
Junior — Middle

Vysvětlete, co znamená zachycení proměnných uvnitř funkce uzávěru.

sobes.tech AI

Odpověď od AI

Zachycení proměnných uvnitř uzávěru znamená, že uzávěr "pamatuje" a může používat proměnné z okolního prostředí, ve kterém byl vytvořen.

Například, pokud je uvnitř funkce deklarována proměnná a poté je vrácena funkce, která tuto proměnnou používá, je tato proměnná "zachycena" uzávěrem a zachovává si svou hodnotu i po opuštění vnější funkce.

Příklad v Swift:

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

let incrementByTen = makeIncrementer(amount: 10)
print(incrementByTen()) // 10
print(incrementByTen()) // 20

Zde uzávěr zachycuje proměnné total a amount, udržuje jejich stav mezi voláními. To umožňuje vytvářet funkce s vnitřním stavem.