Closure被翻译为闭包,C++11引入了Lambda表达式支持Closure,JavaScript支持Closure,Objective C支持Blocks,他们都是Closure,名字各有不同,可是Closure到底有什么用呢?为什么C++11要引入这个东西呢?
按照Wikipedia上的总结,他们都可以统统被叫做Anonymous Function(匿名函数),这样一说,可能很多人就变得没那么陌生了。我以前用C#时还是用的很多的。
关于Javascript Closure,参考:http://stackoverflow.com/questions/111102/how-do-javascript-closures-work
http://jondavidjohn.com/javascript-closure-explained-using-events/
关于Objective C的blocks,参考:http://ios-blog.co.uk/tutorials/programming-with-blocks-an-overview/
关于C++的Lambda表达式,参考:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
其他语言关于Closure的概览,参考:http://en.wikipedia.org/wiki/Anonymous_function
Reference: