2017-05-05 125 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