如果带有 OR 检查所有条件,则为条件

Conditional if with OR checking all conditions

本文关键字:条件 有条件 OR 检查 如果      更新时间:2023-10-16

>如果有 if 像那样块

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 函数,这是我代码的几个部分。有什么技巧可以简短而简单地做到这一点吗?

||运算符

短路。您可以改用|

if (foo1() | foo2() | foo3()) {}

但是,您还应该考虑创建一个函数指针数组并在循环中调用它们。

这是我代码的几个部分

您应该重构代码,以便可以重用它,而不是在许多地方复制和粘贴相同的代码。

我只需要一个 foo 函数返回 true 即可执行该代码。但我必须打电话给他们所有人。当第一个 foo 返回 true 时,问题开始。这样,其余的 foos(foo2 和 foo3)就不会被调用。

好吧,如果你需要调用每个函数,那么你应该调用它们。 真的,只需调用它们并存储结果即可。

但是我有 18 个 foo 函数,这是我代码的几个部分。有什么技巧可以简短而简单地做到这一点吗?

为什么在单个if语句中调用和测试有 18 个函数? 必须有更好的方法来解决问题。 所以每个功能都有副作用,你需要这些副作用发生,很好,但这听起来已经是一个问题了。

我不知道您要解决什么问题,也不知道每个函数的作用,但我很难相信您当前的设置接近最佳状态。

把函数加起来怎么样?(仅当函数是独立的并且可以返回正 int 或指针时,才能正常工作;

int resultSum = func1() + func2() + func3();

if(resultSum>0){
 //do things
}