Middle
Hoe kunnen closures waarden van het type value type vastleggen?
sobes.tech AI
Antwoord van AI
Sluitingen vangen een kopie van de waarde van het type value op het moment van definitie. Als de waarde van het type value verandert nadat de sluiting is gedefinieerd, is binnen de sluiting de originele kopie beschikbaar en niet de gewijzigde waarde.
var counter = 0
let incrementCounter = { // De sluiting vangt een kopie van `counter` (0)
counter += 1
print(counter)
}
incrementCounter() // Drukt 1 af
counter = 10 // We wijzigen de originele variabele `counter`
incrementCounter() // Drukt 2 af. De sluiting werkt met de gevangen kopie, niet met de gewijzigde variabele.
Bij gebruik van @escaping met sluitingen van het type value, is het belangrijk om dit kopieermechanisme in gedachten te houden, omdat de waarde kan veranderen voordat de sluiting wordt aangeroepen.