Sobes.tech
Junior — Middle

Magyarázza el, mit jelent a változók elfogása egy zárófüggvényen belül

sobes.tech MI

Válasz az MI-től

A változók elfogása a zárófüggvényen belül azt jelenti, hogy a zárófüggvény "emlékszik" és használhatja a környező kontextusból származó változókat, ahol létrehozták.

Például, ha egy függvényen belül változót deklarálunk, majd egy olyan függvényt adunk vissza, amely ezt a változót használja, akkor ez a változó "elfogásra" kerül a zárófüggvény által, és megőrzi értékét még akkor is, ha kilépünk a külső függvényből.

Swift példával:

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

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

Ebben az esetben a zárófüggvény elfogja a total és amount változókat, és megőrzi azok állapotát a hívások között. Ez lehetővé teszi belső állapotú függvények létrehozását.