闭包是引用类型
<p ><span >//</span><span >下面是一个使用</span><span >makeIncrementor</span><span >的例子</span></p><p ><span >let</span><span > incrementByTen = </span><span >makeIncrementor</span><span >(forIncrement: 10)</span></p><p ><span >incrementByTen</span><span >()</span></p><p ><span >incrementByTen</span><span >()</span></p><p ><span >incrementByTen</span><span >()</span></p><p ><span ></span></p><p ><span >//</span><span >如果创建了另一个</span><span >incrementor</span><span >,它会有属于他自己的一个全新、独特的</span><span >runningTotal</span><span >变量的引用:</span></p><p ><span >let</span><span > incrementBySeven = </span><span >makeIncrementor</span><span >(forIncrement: 7)</span></p><p ><span >incrementBySeven</span><span >()</span></p><p ><span >incrementBySeven</span><span >()</span></p><p ><span ></span></p><p ><span ></span></p><p ><span >incrementByTen</span><span >()</span></p><p ><span >incrementBySeven</span><span >()</span></p><p ><span >//</span><span >所以闭包捕获值时所捕获的变量或常量是没有关系的</span></p>incrementByTen,incrementBySeven是常量,但是这些常量指向的闭包仍然可以增加其捕获的变量的值。这是因为函数和闭包都是引用类型。//所以无论您将函数或闭包赋值给一个常量还是变量,实际上都是将常量或变量的值设置为对应函数或闭包的引用。//指向闭包的引用是一个常量,而并非闭包内容本身//如果将闭包赋值给两个不同的常量或变量,两个值都会指向同一个闭包。let alsoIncrementByTen = incrementByTenalsoIncrementByTen()总结
以上是内存溢出为你收集整理的Swift-闭包是引用类型全部内容,希望文章能够帮你解决Swift-闭包是引用类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)