Функция Case Назад В начало Вперед

Назначение

При работе вычисляется условие, затем последовательно вычисляются значения границ диапазонов меток и значение условия проверяется на соответствие составным меткам. Возвращаемый тип выраженний - границ диапазонов меток приводится к возвращаемому значению условия. Если это невозможно выдается сообщение об ошибке. Условие соответствует метке если его значение оказывается в одном из перечисленных в метке диапазонов. Значение проверяется на "больше или равно левой границы" и на "меньше или равно правой границы". Если правая граница не указана происходит проверка на равенство. Если условие соответствует метке, вычисляется соответствующие выражение, дальнейшее выполнение прекращается. Если соответствия ни с одной меткой не найдено вычисляется выражение else. Возвращаемые значения всех операторов, в том числе оператора else приводятся к общему типу. Если это невозможно выдается сообщение об ошибке.

Описание

Case "(" <условие> ";"
		 <составная_метка> ":" <выражение>
	{"," <составная_метка> ":" <выражение>}
	[";" <выражение_else>] ")"

Параметры

<условие> - вычисляемое выражение.

<составная_метка> ::= <диапазон> [','<диапазон>]
<диапазон> ::= <левая_граница> [".." <правая_граница>]

<левая_граница> - вычисляемое выражение.

<правая_граница> - вычисляемое выражение.

<выражение> - вычисляемое выражение.

<выражение_else> - вычисляемое выражение. Если выражение else не задано, то по умолчанию генерируется выражение, возвращающее нулевое значение, тип которого совпадает с типом возвращаемого значения остальных операторов. Например для строки - пустая строка, для числа - 0 и т.д.

Результат

Результат вычисления выражения, для которого составная метка соответствует условию. Если соответствия ни с одной меткой не найдено вычисляется выражение else.

Пример

interface exprCase;
  function a(i : word) : string;
  {
	a := Case(i;
		0	: 'I = 0',
		1,2  : 'I = 1,2',
		3..6,8 : 'I = 3..6';
				 'ELSE');
  }
  
  handleEvent
	cmInit : {
		Message ('Передаю 0');
		Message (a(0));
		Message ('Передаю 2');
		Message (a(2));
		Message ('Передаю 5');
		Message (a(5));
		Message ('Передаю 7');
		Message (a(7));
}
  end;
end.

Версия

Атлантис 5.0.03.