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.