Sobes.tech
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 вече е приключила. Обикновена функция такова поведение няма.