Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan penutupan dalam ungkapan C++ Lambda?
C++ Lambda ungkapan menyokong penutupan, yang menyimpan pembolehubah skop fungsi dan menjadikannya boleh diakses oleh fungsi. Sintaks ialah [capture-list] (parameters) -> capture-list mentakrifkan pembolehubah untuk ditangkap, anda boleh menggunakan [=] untuk menangkap semua pembolehubah tempatan mengikut nilai, [&] untuk menangkap semua pembolehubah tempatan melalui rujukan, atau [variable1, variable2, ...] untuk menangkap pembolehubah tertentu. Ungkapan Lambda hanya boleh mengakses pembolehubah yang ditangkap tetapi tidak boleh mengubah suai nilai asal.
Penutupan dalam ungkapan C++ Lambda
Penutupan ialah satu set pembolehubah berkaitan yang disimpan di luar skop fungsi dan boleh diakses oleh fungsi tersebut. Dalam C++, penutupan dilaksanakan melalui ungkapan lambda untuk menangkap pembolehubah dalam konteks pelaksanaan fungsi.
Syntax
Sintaks umum ungkapan C++ Lambda adalah seperti berikut:
[capture-list] (parameters) -> return-type { function-body }
di mana capture-list
mentakrifkan pembolehubah yang akan ditangkap, yang boleh digunakan dengan cara berikut: 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
[=]
: Tangkap semua pembolehubah tempatan mengikut nilai[&]
: Tangkap semua pembolehubah tempatan melalui rujukan [variable1, variable2, .. .]
: Tangkap pembolehubah tertentu mengikut nilai atau rujukan 🎜🎜🎜🎜 Contoh praktikal 🎜🎜🎜 Mari kita pertimbangkan ungkapan Lambda yang perlu mengakses pembolehubah skop fungsi luarnya. Coretan kod berikut menunjukkan fungsi ini: 🎜rrreee🎜 Dalam contoh ini, ungkapan Lambda menangkap pembolehubah boleh ubah
untuk mengubah suai nilai pembolehubah yang ditangkap di dalam ungkapan Lambda. 🎜🎜Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penutupan dalam ungkapan C++ Lambda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!