我发现很多人都用这个词closure and block可以互换。这些人中的大多数无法解释他们在说什么。
一些 Java 程序员(甚至是来自非常昂贵的咨询公司的程序员)将匿名内部类称为“块”和“闭包”——但我知道这不是真的。 (您不能从定义可变变量的方法的范围内传递可变变量......)
我在找:
- 精确的计算机科学块的定义
- 精确的计算机科学闭包的定义
- and 对差异的澄清两者之间。
我真的很想查看链接、文章或书籍请参考这些.
While a block只是一段可以由语句和声明组成的代码,仅此而已,closure是一个真正的一流对象,一个以块作为其值的真正变量。
主要区别在于块只是将指令组合在一起(例如while语句),而闭包是一个包含一些可以执行的代码的变量。
如果你有一个闭包,通常你可以将它作为参数传递给函数,对其进行 currify 和 decurrify,然后主要调用它!
Closure c = { println 'Hello!' }
/* now you have an object that contains code */
c.call()
当然,闭包更强大,它们是变量,可以用来定义对象的自定义行为(而通常你必须使用接口或编程中的其他 OOP 方法)。
你可以想一个closure作为一个包含该函数在其内部执行的操作的函数。
块很有用,因为它们允许确定变量的范围。通常,当您在作用域内定义变量时,您可以覆盖外部定义而不会出现任何问题,并且新定义将在块执行期间存在。
for (int i = 0; i < 10; ++i)
{
int t = i*2;
printf("%d\r\n", t);
}
t
是在块内部定义的(块的主体)for
语句)并将持续在该块内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)