我在一个函数中有几个步骤,如果一个步骤失败了,我不想执行后面的步骤,我也希望只有一个return语句,其中一个选项是嵌套的if-else,但这会很麻烦,所以我甚至不会在这里举一个例子。
我一直在做的事情是这样的(假设step_n
函数返回bool):
bool my_function()
{
bool succeeded;
succeeded = step_1();
if(succeeded)
{
succeeded = step_2();
}
if(succeeded)
{
succeeded = step_3();
}
...
if(succeeded)
{
succeeded = step_n();
}
return succeeded;
}
这似乎是我能想到的最好的情况,但是当函数不返回bool时,我必须对每个函数调用做额外的检查,事情可能会变得非常重复和丑陋。
有什么现代c++方法可以实现同样的想法吗?
3条答案
按热度按时间zphenhs41#
此代码与您所显示的代码等效。
尽管它并不“现代”,任何版本的C++都可以做到这一点。
qmb5sa222#
(puts防火服)
bkhjykvo3#
这将是内存效率低下,但不太容易出错:
您也可以使用
std::find_if
-而不是原始for
循环-来计算执行的步骤:所需的标准头文件为: