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.