if if like block
if(foo() || foo2() || foo3())
{
//do some things
}
我只需要一个foo函数来返回true来执行该代码。 但我必须打电话给所有人。 当第一个foo返回true时问题开始。这样就不会调用其余的foos(foo2和foo3)了。
我知道我可以这样做:
bool foo1 = foo1();
bool foo2 = foo2();
bool foo3 = foo3();
if(foo1 || foo2 || foo3) {}
但我有18个foo函数,这是我代码的一小部分。 有什么技巧可以简单易行吗?
答案 0 :(得分:9)
||
运营商正在短路。您可以改为使用|
:
if (foo1() | foo2() | foo3()) {}
但是你也应该考虑创建一个函数指针数组并在循环中调用它们。
这是我的代码的一小部分
您应该重构代码,以便可以重复使用它,而不是在许多地方复制和粘贴相同的代码。
答案 1 :(得分:2)
我只需要一个foo函数来返回true来执行该代码。但我必须打电话给所有人。当第一个foo返回true时问题开始。这样就不会调用其余的foos(foo2和foo3)了。
如果您需要调用每个函数,那么您应该调用它们。真的,只需打电话给他们并存储结果。
但我有18个foo函数,这是我代码的一小部分。有什么技巧可以简单易行吗?
为什么在一个if
语句中有18个函数可以调用和测试?必须有更好的方法来解决问题。因此,每个功能都有副作用,你需要这些功能发生,很棒,但这听起来像是一个问题。
我不知道你要解决什么问题,我也不知道每个功能的作用,但我很难相信你当前的设置已接近最佳状态。
答案 2 :(得分:1)
如何对功能进行总结? (仅当函数是独立的并且可以返回正int或指针时才有效;
int resultSum = func1() + func2() + func3();
if(resultSum>0){
//do things
}