当前位置:  开发笔记 > 编程语言 > 正文

有人可以用真正简单的语言向我解释什么是封闭?

如何解决《有人可以用真正简单的语言向我解释什么是封闭?》经验,为你挑选了5个好方法。

我要说这是一个副本:.NET中的'闭包'是什么?

"从本质上讲,闭包是一个代码块,可以在以后执行,但它维护了它最初创建的环境 - 即它仍然可以使用创建它的方法的局部变量等,即使在该方法已经完成执行."



1> Jorge Córdob..:

我要说这是一个副本:.NET中的'闭包'是什么?

"从本质上讲,闭包是一个代码块,可以在以后执行,但它维护了它最初创建的环境 - 即它仍然可以使用创建它的方法的局部变量等,即使在该方法已经完成执行."


这应该是一个评论.牛奶声誉的好方法.:P

2> xtofl..:

你的鞋子在大厅里; 你的夹克在厨房里.外出时穿上它们和你的手套(它们在抽屉里).

现在你可以去玩你的车了.十一点钟,你必须去角落商店买些面包.

孩子们玩.忘记了整个世界.

闹钟响了; 小孩看到了:十一点!哦 - 去外面用"外出"封口买面包.



3> Chris S..:

我喜欢Javascript 的Google示例(您可以轻松地将其转换为C#).这不是一个5岁的孩子会理解但是我怀疑一个平均 5岁的孩子会理解一个功能是什么.

/*
* When a function is defined in another function and it
*    has access to the outer function's context even after
*    the outer function returns
* An important concept to learn in Javascript
*/

function outerFunction(someNum) {
  var someString = 'Hai!';
  var content = document.getElementById('content');
  function innerFunction() {
    content.innerHTML = someNum + ': ' + someString;
    content = null; // IE memory leak for DOM reference
  }
  innerFunction();
}


但是,在outerFunction返回后,innerFunction不可用; 显示的内容可能没有闭包,甚至可以在Pascal和Java中完成!

4> Alan..:

下面的回答是原来的措辞,类似于"如何解释对一个5岁的人的封闭".

拿这个盒子; 为自己建造一个漂亮的小型太空船.当你去比利的房子并把你的太空船带到那里; 有了封口,你仍然可以使用你的盒子里的所有碎片,即使盒子留在你的卧室里.



5> AttishOculus..:

如果你真的需要保持简单,那么闭包是一个带有上下文的函数.无论你在何处调用它,闭包中的函数仍然可以访问它定义时的相同变量.(在Lua中,这些被称为upvalues,我认为这是一个非常具有描述性的术语.)

我在Lua中首先遇到了这个概念,这个定义帮助我理解了这个概念.也许看看Lua:它的简单性和强大功能非常吸引人,当然有助于在其他语言中发展某种观点.它的封闭概念就是一个很好的例子.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有