Swift-闭包是引用类型

闭包是引用类型
<p class="p1"><span class="s1">//</span><span class="s2">下面是一个使用</span><span class="s1">makeIncrementor</span><span class="s2">的例子</span></p><p class="p2"><span class="s3">let</span><span class="s1"> incrementByTen = </span><span class="s4">makeIncrementor</span><span class="s1">(forIncrement: 10)</span></p><p class="p3"><span class="s1">incrementByTen</span><span class="s5">()</span></p><p class="p3"><span class="s1">incrementByTen</span><span class="s5">()</span></p><p class="p3"><span class="s1">incrementByTen</span><span class="s5">()</span></p><p class="p4"><span class="s1"></span>
</p><p class="p5"><span class="s6">//</span><span class="s1">如果创建了另一个</span><span class="s6">incrementor</span><span class="s1">,它会有属于他自己的一个全新、独特的</span><span class="s6">runningTotal</span><span class="s1">变量的引用:</span></p><p class="p2"><span class="s3">let</span><span class="s1"> incrementBySeven = </span><span class="s4">makeIncrementor</span><span class="s1">(forIncrement: 7)</span></p><p class="p3"><span class="s1">incrementBySeven</span><span class="s5">()</span></p><p class="p3"><span class="s1">incrementBySeven</span><span class="s5">()</span></p><p class="p4"><span class="s1"></span>
</p><p class="p4"><span class="s1"></span>
</p><p class="p3"><span class="s1">incrementByTen</span><span class="s5">()</span></p><p class="p3"><span class="s1">incrementBySeven</span><span class="s5">()</span></p><p class="p5"><span class="s6">//</span><span class="s1">所以闭包捕获值时所捕获的变量或常量是没有关系的</span></p>
incrementByTen,incrementBySeven是常量,但是这些常量指向的闭包仍然可以增加其捕获的变量的值。这是因为函数和闭包都是引用类型。
//所以无论您将函数或闭包赋值给一个常量还是变量,实际上都是将常量或变量的值设置为对应函数或闭包的引用。
//指向闭包的引用是一个常量,而并非闭包内容本身
//如果将闭包赋值给两个不同的常量或变量,两个值都会指向同一个闭包。

let alsoIncrementByTen = incrementByTen
alsoIncrementByTen()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值