什么叫做closure? 哪位兄弟能够给出closure一个严谨的中文定义?

什么叫做closure? 哪位兄弟能够给出closure一个严谨的中文定义?

经常听到closure,哪位兄弟能够给出closure一个严谨的中文定义,最好再举个例子。


QUOTE:
原帖由 perlish 于 2008-7-30 18:40 发表
经常听到closure,哪位兄弟能够给出closure一个严谨的中文定义,最好再举个例子。

看看 Wikipedia 的解释吧,http://en.wikipedia.org/wiki/Closure_%28computer_science%29

btw,若你有 Scheme 的经验,这个就更好理解了。

另外,closure 在 Perl 中的使用可以看看 Perl FAQ 7 的 What's a closure? (perldoc -q closure) 以及 perlref 中的介绍。



QUOTE:
原帖由 MMMIX 于 2008-7-30 19:24 发表

看看 Wikipedia 的解释吧,http://en.wikipedia.org/wiki/Closure_%28computer_science%29

btw,若你有 Scheme 的经验,这个就更好理解了。

另外,closure 在 Perl 中的使用可以看看 Perl FAQ 7 的 Wha ...

能否用自己的理解尝试解释下。
我在intermediate perl书上看来的,例子如下

use File::Find;

my $callback;
{
  my $count = 0;
  $callback = sub { print ++$count, ": $File::Find::name\n" };
}
find($callback, '.');

在{}之间的变量在代码块结束后理应全部失效,但是由于$callback是外部代码块的变量,而且这个函数使用了$count变量,所以{}构成了一个闭包,他们里面的变量都不会失效