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
.
Все операторы после первого соответствия выполняются:
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:
Функциональность оператора 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:
Соответствие между функциональным и обязательной формой оператора 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
|
Произвольные объекты MuPAD |
|
Произвольные последовательности операторов |
Результат последней команды выполняется в операторе case
. Пустой объект типа, DOM_NULL
возвращен, если никакое ответвление соответствия не было найдено и никакое ответвление otherwise
, существует. NIL
возвращен, если с соответствующим ответвлением столкнулись, но никакая команда не выполнялась в этом ответвлении.
Функциональность оператора case
соответствует оператору switch
языка программирования C.