В чем разница между этими утверждениями if? - PullRequest
0 голосов
/ 10 февраля 2019

В чем разница между этими условными выражениями?

if ((middleOfTabIndicator < index * tabIndicatorWidth)) {
    if (index - 1 != featuredTabIndex) {
        // Do something
    }
}

против

if ((middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) != featuredTabIndex)) {
    // Do something
}

Все мои переменные int.Разве эти условия не одинаковы?Когда я пишу первое условие, все в порядке, но когда я пишу второе условие, результат меняется.Почему это происходит?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

В первом условии у вас есть «вложенный if», что означает, что ваш «внешний if» сначала проверяется, затем, если он истинен, тогда будет проверяться ваш «внутренний if» (который является вложенным if).Во втором условии есть только одно «если», но оно содержит два условия, и они оба должны быть истинными, чтобы, если тело могло работать.

0 голосов
/ 10 февраля 2019

Что является общим, так это то, что оба утверждения IF из вашего примера неясны, и было бы полезно их экстернализовать либо с помощью правильной переменной, объясняющей их значение, либо с адекватно названным методом.

В основном это разные конструкции.Первый использует вложенный оператор IF.Второй - предварительная оценка вложенного оператора IF.

Первая конструкция может охватывать 2 сценария.1) middleOfTabIndicator < index * tabIndicatorWidth && ((index - 1) != featuredTabIndex) 2) when middleOfTabIndicator < index * tabIndicatorWidth && ((index - 1) == featuredTabIndex)

В то время как вторая конструкция может охватывать только один сценарий:

middleOfTabIndicator < index * tabIndicatorWidth & ((index - 1) != featuredTabIndex)

В каком-то смысле конструкция № 1 является более выразительной и охватывает больше случаев, чемпостроить номер два.Но в то же время вы можете сжать конструкцию № 1 без вложенного IF следующим образом:

if ((middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) != featuredTabIndex)) {
    // Do something
}
else if (middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) == featuredTabIndex)) {
}

Теперь у вас такое же поведение, как у конструкции № 1 без вложенности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...