Sobes.tech
Junior — Middle

Paaiškinkite skirtumą tarp uždarymo ir funkcijos programavime.

sobes.tech AI

Atsakymas iš AI

Funkcija yra kodo blokas, kuris atlieka tam tikrą užduotį ir gali priimti parametrus bei grąžinti rezultatą.

Uždarymas (closure) yra funkcija, kuri įsikabina ir išsaugo prieigą prie išorinės apimties kintamųjų, net ir po to, kai ši išorinė funkcija baigia vykdyti.

Pavyzdys Swift kalba:

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

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

Čia incrementer yra uždarymas, kuris išlaiko total būseną tarp iškvietimų, net ir po to, kai makeIncrementer jau baigėsi. Paprasta funkcija tokio elgesio neturi.