Sobes.tech
Junior — Middle

Explique a diferença entre um closure e uma função na programação.

sobes.tech IA

Resposta da IA

Uma função é um bloco de código que realiza uma tarefa específica e pode aceitar parâmetros e retornar um resultado.

Um closure (fecho) é uma função que captura e mantém o acesso às variáveis do escopo externo, mesmo após essa função externa ter terminado de executar.

Exemplo em 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

Aqui, incrementer é um closure que mantém o estado de total entre chamadas, mesmo após makeIncrementer ter terminado sua execução. Uma função comum não possui esse comportamento.