如果带有 OR 检查所有条件,则为条件
Conditional if with OR checking all conditions
>如果有 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
}
相关文章:
- 如何使用 soong 命名空间来有条件地编译模块
- 有条件地将默认参数传递给函数(使用"?"运算符)
- 根据模板类型有条件地删除变量
- 有条件地选择带有 decltype() 和三元运算符的类型
- 如何使用 SFINAE 在方法调用中有条件地定义变量?
- 有条件的打印和计数在 std::map 上有限制
- 如何在 c++ 中有条件地包含标头?
- 如何仅在Qt是用ltcg构建时才有条件地启用ltcg?
- 如何在Visual Studio 2019中有条件地编译c++源文件
- C++可以有条件地向下转换类指针吗
- 使用 SFINAE 有条件地解析分配器成员
- 有条件地删除宏
- 有条件地包含C++标准库
- 如何有条件地将元素添加到 std::array - C++11
- 是否根据编译器版本有条件地包含源文件
- 有条件地启用类C++构造函数
- 我可以有条件地使用多个参数吗?
- 有条件地使用 Boost Python 添加模块
- 有什么东西阻止std::optional::value_or()有条件地不例外吗?
- 无法使用三元运算符有条件地分配"istream &"?