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.