关于闭包的简单理解

来源:互联网 发布:淘宝更换类目有影响吗 编辑:程序博客网 时间:2024/05/20 10:11

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

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

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

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
原创粉丝点击