Sobes.tech
Junior — Middle

Какъв вид данни представлява затваряне в програмирането?

sobes.tech AI

Отговор от AI

Затваряне (closure) в програмирането е функция, която «запомня» и има достъп до променливите от външната си област на видимост дори след като външната функция е приключила изпълнението си.

По-просто казано, затварянето позволява на функцията да запази състоянието си и да използва променливи, обявени извън тялото ѝ.

Пример на Swift (iOS):

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 вече е приключила.

Затварянията се използват широко за създаване на функции със състояние, обработка на събития, асинхронни операции и др.