Inferens jenis ungkapan lambda C++ membolehkan pengkompil menentukan jenis nilai pulangan lambda: jika lambda hanya mempunyai satu pernyataan pulangan, jenis nilai pulangan ialah jenis ungkapan pulangan. Jika lambda mempunyai berbilang penyata pemulangan, jenis pemulangan ialah salah satu daripada jenis ini (pengkompil mungkin mengeluarkan amaran). Jika tiada penyata pulangan, jenis nilai pulangan adalah tidak sah.
Jenis Inferens untuk Ungkapan Lambda dalam C++
Ekspresi Lambda ialah ciri sintaksis yang berkuasa dalam C++ yang membolehkan penciptaan fungsi tanpa nama pada masa jalan. Inferens jenis untuk ungkapan lambda ialah ciri utama yang membolehkan pengkompil menentukan jenis nilai pulangan bagi ungkapan lambda. . pembolehubah.
-> return-type
ialah penentu jenis pulangan pilihan yang menentukan jenis nilai pulangan bagi ungkapan lambda. Taip inferens
return
, jenis nilai pulangan ialah jenis ungkapan return
. return
, tetapi ia mengembalikan nilai jenis yang berbeza, jenis nilai pulangan ialah mana-mana jenis tersebut. Dalam kes ini, pengkompil boleh mengeluarkan amaran. return
, jenis nilai return ialah void
. [capture list]
是一个可选的捕获列表,指定 lambda 表达式可以访问的外部变量。(parameter list)
是一个可选的参数列表,指定 lambda 表达式接收的参数。-> return-type
是一个可选的返回类型指定符,指定 lambda 表达式的返回值类型。类型推断
如果未指定返回值类型,编译器将尝试根据 lambda 表达式中的以下规则推断它:
return
语句,则返回值类型为 return
表达式的类型。return
语句,但它们返回不同类型的值,则返回值类型为这些类型中的任何一个。在这种情况下,编译器可能会发出警告。return
语句,则返回值类型为 void
。实战案例
案例 1:使用类型推断
以下 lambda 表达式使用类型推断,返回值类型为 int
:
auto lambda = [capture list] (parameter list) -> return-type { // lambda function body }
案例 2:指定返回值类型
以下 lambda 表达式显式指定返回值类型为 std::string
:
auto lambda = [] (int a, int b) { return a + b; };
案例 3:推断多重返回类型
以下 lambda 表达式包含两个 return
语句,返回类型推断为 int
或 std::string
int
: 🎜rreee 🎜🎜 Kes 2: Tentukan jenis nilai pulangan 🎜🎜🎜Ungkapan lambda berikut secara eksplisit menentukan jenis nilai pulangan sebagai std::string
: 🎜auto lambda = [] (std::string a, std::string b) -> std::string { return a + b; };
return
, dan jenis return disimpulkan sebagai int
atau std::string
: 🎜auto lambda = [] (int a, std::string b) { if (a < 0) { return a; } else { return b; } };
Atas ialah kandungan terperinci Bagaimanakah ungkapan C++ Lambda melakukan inferens jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!