关于闭包的简单理解

最近因为看到很多关于闭包的概念文章,说一下自己的简单理解。

“闭包”就从字面上的意思上来理解,“闭”即是关闭,“包”即是承包。用大白话来说就是这件事我承包了你们就谁也也插手了,相当于做一件事我去做,我负责到底。

在代码里面就是在嵌套函数的地方

func function() -> (Int) {
    var rtm = 1
    
    func addone() ->Int {
        return rtm + 1
    }
    
    
    
    return addone()
}
在<pre name="code" class="objc">function函数里面嵌套一个addone函数,rtm作为function函数的变量,在addone函数里面是可以调用到的,这时候在函数里面调用addone函数,就会执行rtm+1的实现
这个时候就是一个闭包,只负责简单的调用,具体的addone实现以及里面的变量访问全部交给addone去处理就行了。
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51); font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><span style="font-family:黑体;margin: 0px; padding: 0px;">在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。</span></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51); font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><span style="font-family:黑体;margin: 0px; padding: 0px;">Peter J. Landin 在1964年将术语闭包定义为<span style="color:#ff0000;margin: 0px; padding: 0px;">一种包含环境成分和控制成分的实体</span>。</span></p><span style="color: rgb(255, 0, 0); font-family: 黑体; font-size: 14px;">闭包是从用户角度考虑的一种设计概念,它基于对上下文的分析,把龌龊的事情、复杂的事情和外部环境交互的事情都自己做了,留给用户一个很自然的接口。</span>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值