Условная операция

Условная операция (первая форма) имеет следующий вид:

условие ? выражение1 : выражение2

Если условие выполняется, то результатом является значение выражения1, иначе значение выражения2.

Например:

var min := a < b ? a : b;

Нетрудно видеть, что условная операция позволяет в простых случаях не использовать условный оператор. Например, предыдущий код для вещественных a и b эквивалентен следующему:

var min: real;
if a<b then
  min := a
else min := b;

Кроме того, имеется вторая форма условной операции в синтаксисе Паскаля:

if условие then выражение1 else выражение2

Например:

var min := if a < b then a else b;

Рекомендуется использовать вторую форму условной операции.

Ограничение. Вторую форму условной операции нельзя использовать в качестве выражения верхнего уровня в лямбдах. Следующий код ошибочен:

var l: real -> real := x -> if x<0 then 0 else x;

Для решения указанной проблемы можно взять условную операцию в скобки:

var l: real -> real := x -> (if x<0 then 0 else x);