lambda捕获列表的使用?
时间: 2024-04-18 21:24:07 浏览: 67
lambda使用详解
Lambda捕获列表是指在lambda表达式中可以捕获外部变量,并在lambda表达式中使用这些变量。捕获列表出现在lambda的参数列表之前,并用方括号括起来。
捕获列表有以下几种形式:
1. 捕获单个变量:可以通过值或引用来捕获单个变量。
- `[var]`:通过值捕获变量`var`,在lambda表达式中使用`var`的副本。
- `[&var]`:通过引用捕获变量`var`,在lambda表达式中直接使用`var`。
2. 捕获多个变量:可以同时捕获多个变量,每个变量之间用逗号分隔。
- `[var1, var2]`:通过值捕获变量`var1`和`var2`。
- `[&var1, &var2]`:通过引用捕获变量`var1`和`var2`。
3. 捕获所有变量:可以通过值或引用来捕获当前作用域中的所有变量。
- `[=]`:通过值捕获当前作用域中的所有变量。
- `[&]`:通过引用捕获当前作用域中的所有变量。
4. 混合捕获:可以混合使用值和引用来捕获变量。
- `[var1, &var2]`:通过值捕获变量`var1`,通过引用捕获变量`var2`。
通过捕获外部变量,lambda表达式可以在其函数体中使用这些变量,即使这些变量在lambda表达式外部定义。捕获列表允许在lambda表达式中访问外部作用域的变量,并且可以控制变量的访问方式(值或引用)。
注意:在lambda表达式中捕获的变量必须是final或有效final,以确保线程安全性。
阅读全文