想象一下,我有一些指令使用/操作我的范围内的许多变量,并且这些指令需要在同一范围内重复多次.
有没有办法封装所有它们并只使用一条指令调用它们而不使用函数?例:
int main()
{
int contador = 0;
float dato;
queue<float> cola;
// a lot of other variables
RUTINA
{
contador++;
cola.push(dato);
// manipuling a lot of other variables
cout<<"Se ha ingresado un nuevo dato: "<<dato;
}
...
...
// something happens
RUTINA;
...
...
// another thing happens
RUTINA;
...
...
// another thing else happens
RUTINA;
...
...
}
Run Code Online (Sandbox Code Playgroud)
显然,尝试使用函数执行此操作不会很好(特别是如果我们在例程中操作许多变量).
更新:如果我在main()之外使用一个函数(内部不允许),它当然会工作,但是我必须发送所有变量如何引用参数...它与复制/粘贴几乎相同每次我需要时的rutine代码.
这是一个通过引用捕获的lambda.
auto const rutina = [&]()
{
contador++;
cola.push(dato);
cout<<"Se ha ingresado un nuevo dato: "<<dato;
};
Run Code Online (Sandbox Code Playgroud)
你这样使用它:
rutina();
Run Code Online (Sandbox Code Playgroud)
但这通常不是一个好主意.
更好地阅读定义命名函数,并将相关变量作为参数传递给此类函数.