Junior — Middle
Обяснете разликата между затваряне и функция в програмирането.
sobes.tech AI
Отговор от AI
Функцията е блок от код, който изпълнява определена задача и може да приема параметри и да връща резултат.
Затваряне (closure) е функция, която улавя и запазва достъпа до променливи от външната област, дори след като тази външна функция е приключила изпълнението си.
Пример на Swift:
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
Тук, incrementer е затваряне, което запазва състоянието на total между извикванията, въпреки че makeIncrementer вече е приключила. Обикновена функция такова поведение няма.