You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何逐行检查条件并临时忽略指定单行条件的校验?

问题与解决方案

原代码

enum Condition
{
    Off,
    On,
    Other
};

Condition val1, val2, val3;

bool CheckCondition()
{
    if (!(val1 == Condition.On)) return false;
    if (!(val2 == Condition.Off)) return false;
    if (!(val3 == Condition.On)) return false;

    return true;
}

需求说明

  • 当某个条件变量处于Condition.Off状态时,临时忽略该条件的校验(直到它被重新设置为Condition.On),但必须执行完所有其他条件的校验。
  • 仅当所有未被忽略的条件校验都通过时,函数才返回true。
  • 核心要求:即使某个条件因Off被忽略,也不能提前返回false,必须执行完所有检查逻辑后再判断最终结果。

实现方案

代码实现

bool CheckCondition()
{
    bool allValid = true;

    // 校验val1:非Off状态时,必须为On
    if (val1 != Condition.Off)
    {
        if (val1 != Condition.On)
        {
            allValid = false;
        }
    }

    // 校验val2:非Off状态时,必须为Off(原逻辑要求)
    if (val2 != Condition.Off)
    {
        if (val2 != Condition.Off)
        {
            allValid = false;
        }
    }

    // 校验val3:非Off状态时,必须为On
    if (val3 != Condition.Off)
    {
        if (val3 != Condition.On)
        {
            allValid = false;
        }
    }

    return allValid;
}

思路解析

  1. 用allValid变量统一记录所有有效条件的校验结果,初始值为true。
  2. 对每个条件变量单独处理:
    • 若变量是Condition.Off,直接跳过该条件的校验,不改变allValid。
    • 若变量不是Condition.Off,则检查它是否符合预期值(val1、val3需为On,val2需为Off),不符合则将allValid设为false。
  3. 所有检查完成后返回allValid,确保只有未被忽略的条件全部通过时才返回true,且全程执行完所有检查逻辑。

内容的提问来源于stack exchange,提问作者chrisk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:03:36