Оператор If Then против оператора Case
Операторы If Then и Case
подобны. В некоторый случаях Вы можете использовать любой из двух операторов для получения того же самого результата.
Но между ними существует важное различие:
¨ В операторе If Then можно использовать любые виды булевых выражений. Каждое выражение, следующее за IF или ELSIF областями, может быть несвязанно с другими выражениями в операторе. В операторе Case, напротив, только одно булево выражение сравнивается с константой в каждой WHEN области.
¨ Использование ELSIF предложения может привести к логике, которая слишком сложна для компилятора, так как каждое следующее друг за другом предложение ELSIF должно еще проверять, ложность предыдущих IF/ELSIF предложений. Следующий пример показывает как компилятор интерпретирует оператор If Then. Если a и b сложные выражения, тогда инверсия этих выражений даст, возможно, даже более сложные выражения.
Оператор If Then Интерпретация компилятора
IF a THEN IF a THEN
c = d; c = d;
END IF;
ELSIF b THEN IF !a & b THEN
c = e; c = e;
END IF;
ELSE IF !a & !b THEN
c = f; c = f;
END IF; END IF;