假设我有这段代码:
for (int i = 0; i < x.size(); i++) {
auto &in = input[i];
auto &func = functions[i];
auto &out = output[i];
// pseudo-code from here:
unaccessiable(i);
i = func(in); // error, i is not declared
out = func(i); // error, i is not declared
// useful when you mistake in/out for i
}
Run Code Online (Sandbox Code Playgroud)
我需要实现在代码中的某一行之后无法访问或使用变量的效果.(在此代码中,之后unaccessiable(i))具体我想要禁用for循环的迭代器.
注意:这仅用于代码正确性,除此之外什么都没有.所以lambdas(非编译时解决方案)只是性能阻碍.
使名称在块中途无法使用的最简单方法是将其声明为struct:
for (int i = 0; i < x.size(); i++) {
auto &in = input[i];
auto &func = functions[i];
auto &out = output[i];
// pseudo-code from here:
struct i; // ?
i = func(in); // error, i is a type
// useful when you mistake out for i
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以将"here"之后的代码放在嵌套块中,您可以将其重新声明i为某种ungood类型的变量,这可能会提供更好的诊断.
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |