Как сделать двойное выражение «if», которое переходит к тому же «else», если any равно false - PullRequest
0 голосов
/ 22 ноября 2018

Название может ввести в заблуждение, я действительно не знаю, как правильно назвать мою проблему.

Просто посмотрите на код.По сути, я пытаюсь добиться следующего: если «first» равно false, я хочу перейти к «else» всегда, но если мы проверяем «second», я хочу перейти к «else», если «first» ИЛИ «second»ложно.

    //'first' and 'second' might be true, might be false

    if(first)
    {
        if(checkSecond && !second)
        {
            //If we allow checking for 'second' and 'second' is false go to else (but we can't)
        }

        if(!checkSecond)
        {
            //Do something when 'first' was true and we are not checking 'second'
            checkSecond = true; //allow checking second;
        }
    }
    else
    {
        //Reset when 'first' is false
        //or
        //when 'second' is false if we allow checking it (but we can't)
        checkSecond = false; //don't allow checking second;
    }

Я понял, какой синтаксис может выглядеть, если бы я его реализовал, это могло бы сделать мою проблему немного чище (или, может быть, что-то подобное уже существует, чего я не делаю)не знаю)

    if (first && if (checkSecond) second) //go to else if 'first' is false OR 'second' is false if 'checkSecond' is true
    {
        if(!checkSecond)
        {
            //Do something when 'first' was true and we are not checking 'second'
            checkSecond = true; //allow checking second;
        }
    }
    else
    {
        //Reset when 'first' is false
        //or
        //when 'second' is false if we allow checking it
        checkSecond = false; //don't allow checking second
    }

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете использовать && для checkSecond с second для достижения этой цели.

if(first && !(checkSecond && !second))
{
}
else
{
}

Здесь, если checkSecond равно false, вторая часть условия (!(checkSecond && !second)) всегда верна.Следовательно, это зависит только от значения first.Кроме того, если checkSecond равно true, значение второй части условия зависит от значения second.Если это true, вторая часть - true, а если false, вторая часть будет false (так как checkSecond - true).Поэтому все, что вы хотите, является статистическим.

Кроме того, вы можете иметь альтернативную форму условия в следующем:

if(first && (!checkSecond || second))
{
}
else
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...