0x00 Lesson
If you use any external values inside your closure, Swift capture
them – stores them alongside the closure, so they can be modified even if they don’t exist any more.
Right now we have a travel()
function that returns a closure, and the returned closure accepts a string as its only parameter and returns nothing:
We can call travel()
to get back the closure, then call that closure freely:
Closure capturing happens if we create values in travel()
that get used inside the closure. For example, we might want to track how often the returned closure is called:
Even though that counter
variable was created inside travel()
, it gets captured
by the closure so it will still remain alive for that closure.
So, if we call result("London")
multiple times, the counter will go up and up: