2017-05-05 90 views
1

请检查下面这段代码:有什么意义 “[=]” 以CPP

NodeScheduleLambda(this, 0.01f, [=] 
{ 
    this->removeFromParentAndCleanup(true); 
}); 

在什么是 “[=]” 这是什么意思。任何人都可以帮助我。谢谢你...

回答

4

它不是特定于coco2d。

这是一个lambda捕获列表。使变量可用于lambda。您可以使用[=]以值为单位的副本,或者按照引用传递的[&]。

您还可以使用[]捕获任何东西。

更多细节:https://msdn.microsoft.com/library/dd293608.aspx

+0

谢谢.. @rilent – Sudhakar

1

一个lambda是一个未命名的/匿名函数,由于它的代码的简短片段是在编程有用的。用C

lambda函数++定义如下

[]() { } 

[]是捕获列表,()参数列表和{}函数体。

捕获列表定义了lambda外部应该在函数体内可用的内容以及如何实现。它可以是:

  • 一个值:[X]
  • 参考[& X]
  • 通过引用[&]
  • 相同第三种类型,而是由值的任何变量当前在范围[=]

您正在使用第四个捕获列表传递lamda函数作为第三个参数。

NodeScheduleLambda(this, 0.01f, [=]{ this->removeFromParentAndCleanup(true); }); 
+1

谢谢你... @abhishek – Sudhakar