замена if... else

 

довольно часто блок if..else.. заменяется на ..?.. : .. практически аналогичный, но более простой в написании. Это выглядит так:

 

a = 1 == 1; // присваиваем переменной a значение выражениЯ сравнениЯ

b = 1>1 // присваиваем переменной b значение выражениЯ сравнениЯ

if (a and b) {// если обе переменные имеют значение "истина"

trace("a and b") // сообщим об этом

} else if (a) { // но если это не так, то проверим переменную а и если она имеет значение "истина"

trace("a") // сообщим об этом

} else if (b) { // если и это не так, то проверим переменную b и если она имеет значение "истина"

trace("b") // сообщим об этом

}

a and b ? message="a and b" : "";// если обе переменные имеют значение "истина", то зададим соответствующее значение переменной message, иначе ничего не делаем

a ? message="a" : "";// если переменнаЯ а имеет значение "истина", то зададим соответствующее значение переменной message, иначе ничего не делаем

b ? message="b" : "";// если переменнаЯ b имеет значение "истина", то зададим соответствующее значение переменной message, иначе ничего не делаем

trace (message);// сообщим о результате.

 

этот пример наглядно показывает, что синтаксис .. ?.. : .. полная лажа по сравнению с блоком If..else.. :) в нашем примере блок if..else if ... проверяет значения переменных только до тех пор, пока не находит условие, возвращающее true. А в случае с использованием .. ?.. : .. происходит проверка и дальше. Почему? Потому что полный аналог выглядит так: a and b ? trace ("a and b") : a ? trace ("a"): b ? trace ("b"): ""; что совершенно нечитабельно, хотя и короче. При этом это далеко не все недостатки. Если скопировать эту строку и вставить ее в режиме Normal Mode, то .... посмотрите сами... выход - не использовать функции, и будет это выглядеть так: a and b ? message="a and b" : a ? message="a" : b ? message="b": ""; trace(message) но и это еще не всё: в блоке if .. else if .. можно легко использовать несколько действий, в то время как .. ?.. : .. не предоставляет такой возможности. вот сколько заморок несет в себе вроде простая штука :)

отсюда вывод: используем только тогда, когда нужно быстренько что-то проверить и совершить одну операцию в зависимости от результата.

 

Hosted by uCoz