Sobes.tech
Junior — Middle

Explique o conceito de closures fora de escopo na programação.

sobes.tech IA

Resposta da IA

Na programação, um encerramento é uma função que captura e mantém referências às variáveis do escopo externo, mesmo após esse escopo ter terminado a sua execução. A ideia de encerramentos que não saem do escopo significa que o encerramento continua a ter acesso a essas variáveis, pois elas não são destruídas enquanto o encerramento existir.

Por exemplo, em Swift:

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

let incrementByFive = makeIncrementer(amount: 5)
print(incrementByFive()) // 5
print(incrementByFive()) // 10

Aqui, o encerramento mantém a variável total, que normalmente deveria sair do escopo após a execução de makeIncrementer. Mas graças ao encerramento, total é mantido e alterado a cada chamada.

Assim, os encerramentos permitem manter o estado e trabalhar com variáveis do escopo externo sem sair dele.