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.