Maison >développement back-end >C++ >Comment implémenter la fermeture dans une expression C++ Lambda ?
Les expressions C++ Lambda prennent en charge les fermetures, qui enregistrent les variables de portée de fonction et les rendent accessibles aux fonctions. La syntaxe est [capture-list] (paramètres) -> return-type { function-body }. capture-list définit les variables à capturer, vous pouvez utiliser [=] pour capturer toutes les variables locales par valeur, [&] pour capturer toutes les variables locales par référence, ou [variable1, variable2, ...] pour capturer des variables spécifiques. Les expressions Lambda ne peuvent accéder qu'aux variables capturées mais ne peuvent pas modifier la valeur d'origine.
Fermetures dans les expressions C++ Lambda
Une fermeture est un ensemble de variables liées qui sont stockées en dehors de la portée de la fonction et accessibles par la fonction. En C++, les fermetures sont implémentées via des expressions lambda pour capturer des variables dans le contexte d'exécution d'une fonction.
Syntaxe
La syntaxe générale de l'expression C++ Lambda est la suivante :
[capture-list] (parameters) -> return-type { function-body }
où capture-list
définit les variables à capturer, qui peuvent être utilisées de la manière suivante : capture-list
定义要捕获的变量,可以采用以下方式:
[=]
: 捕获所有局部变量按值[&]
: 捕获所有局部变量按引用[variable1, variable2, ...]
: 按值或引用捕获特定变量实战案例
让我们考虑一个需要访问其外部函数作用域变量的 Lambda 表达式。以下代码段演示了此功能:
#include <iostream> int main() { int value = 10; auto lambda = [value] () { std::cout << value << std::endl; }; lambda(); // 输出 10 return 0; }
在这个例子中,Lambda 表达式捕获 value
变量按值,并可以在其函数体内访问。
注意
mutable
[=]
: Capturez toutes les variables locales par valeur[&]
: Capturez toutes les variables locales par référence [variable1, variable2, .. .]
: Capturez une variable spécifique par valeur ou référence 🎜🎜🎜🎜 Exemple pratique 🎜🎜🎜 Considérons une expression Lambda qui doit accéder à sa variable de portée de fonction externe. L'extrait de code suivant illustre cette fonctionnalité : 🎜rrreee🎜 Dans cet exemple, l'expression Lambda capture la variable value
par valeur et est accessible dans le corps de sa fonction. 🎜🎜🎜Note🎜🎜mutable
pour modifier la valeur d'une variable capturée dans une expression Lambda. 🎜🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!