Junior — Middle
Como é que o uso de uma variável dentro de um closure e a subsequente chamada desse closure após a sua alteração afeta o valor final da variável counter?
sobes.tech IA
Resposta da IA
Se uma variável counter for usada dentro de um encerramento, o comportamento depende de como exatamente o encerramento captura essa variável:
- Em Swift, os encerramentos capturam variáveis por referência se forem declaradas como
var. Isso significa que, se após criar o encerramento o valor decountermudar, ao chamar o encerramento será usado o valor atual.
Exemplo:
var counter = 0
let closure = {
print(counter)
}
counter = 5
closure() // Vai imprimir 5
- Se a variável foi capturada como uma constante (por exemplo, via
letdentro do encerramento ou se o encerramento copia explicitamente o valor), então a mudança fora do encerramento não afetará o valor dentro.
Portanto, ao usar uma variável dentro de um encerramento e alterar seu valor posteriormente, o valor final ao chamar o encerramento refletirá o estado atual da variável se ela foi capturada por referência.