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:
func travel() -> (String) -> Void {
return {
print("I'm going to ($0)")
}
}
We can call travel()
to get back the closure, then call that closure freely:
let result = travel()
result("London")
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:
func travel() -> (String) -> Void {
var counter = 1
return {
print("(counter). I'm going to ($0)")
counter += 1
}
}
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:
result("London")
result("London")
result("London")
0x01 我的小作品
欢迎体验我的作品之一:小汉字-XHanzi
汉字书写入门,常用汉字 3800 个,二级字表 2200 个
App Store
搜索即可~
原文地址:https://blog.csdn.net/xjh093/article/details/128110873
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_45310.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!