case, of, otherwise, end_case, _case

Оператор switch

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Для случая переключателя в MATLAB® смотрите switch.

Синтаксис

case x
  of match1 do
    statements1
  of match2 do
    statements2
  ...
  otherwise
    otherstatements
end_case

case x
  of match1 do
    statements1
  of match2 do
    statements2
  ...
end_case

_case(x, match1, statements1, match2, statements2, , …, <otherstatements>)

Описание

case-end_case оператор позволяет переключаться между различными ветвями в программу.

case оператор является управляющей структурой, которая расширяет функциональность if оператор. В case оператор, объект по сравнению со многими данными значениями, и выполняются одна или несколько последовательностей оператора.

Если значение x равняется одному из значений match1, match2 и т.д., первая ветвь соответствия и весь после ветвей (включая otherwise) выполняются, пока выполнение не отключено break или return оператор или end_case.

Если значение x не равняется ни одному из значений match1, match2, ..., только otherwise ветвь выполняется. Если никакой otherwise ветвь существует, case оператор отключает и возвращает пустой объект типа DOM_NULL.

Ключевое слово end_case может быть заменен ключевым словом end.

Примеры

Пример 1

Все операторы после первого соответствия выполняются:

x := 2:
case x
  of 1 do print(1)
  of 2 do print(4) 
  of 3 do print(9)
  otherwise print("otherwise")
end_case:

break может использоваться, чтобы гарантировать, что только одна соответствующая ветвь выполняется:

case x
  of 1 do print(1); 1; break
  of 2 do print(4); 4; break
  of 3 do print(9); 9; break
  otherwise print("otherwise")
end_case:

delete x:

Пример 2

Функциональность case оператор позволяет совместно использовать код, который должен использоваться в нескольких ветвях. Следующая функция использует оператор print(x, "is a real number") для трех ветвей, которые соответствуют действительным числам MuPAD®:

isReal := proc(x)
begin
   case domtype(x) 
     of DOM_INT do
     of DOM_RAT do
     of DOM_FLOAT do print(x, "is a real number"); break
     of DOM_COMPLEX do print(x, "is not a real number"); break
     otherwise print(x, "cannot decide");
   end_case
end_proc:
isReal(3), isReal(3/7), isReal(1.23), isReal(3 + I), isReal(z)

delete isReal:

Пример 3

Соответствие между функциональным и обязательной формой case оператор продемонстрирован:

hold(_case(x, match1, (1; break), match2, (4; break),
           print("otherwise")))
case x
  of match1 do
    1;
    break
  of match2 do
    4;
    break
  otherwise
    print("otherwise")
end_case
hold(_case(x, match1, (1; break), match2, (4; break)))
case x
  of match1 do
    1;
    break
  of match2 do
    4;
    break
end_case

Параметры

x, match1, match2, …

Произвольные объекты MuPAD

statements1, otherstatements, …

Произвольные последовательности операторов

Возвращаемые значения

Результат последней команды выполняется в case оператор. Пустой объект типа DOM_NULL возвращен, если никакая ветвь соответствия не была найдена и никакой otherwise ветвь существует. NIL возвращен, если с соответствующей ветвью столкнулись, но никакая команда не выполнялась в этой ветви.

Алгоритмы

Функциональность case оператор соответствует switch оператор языка программирования C.

Смотрите также

Функции MuPAD