blockСоздайте объект, защищенный от оценки
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
block(a)
block(a) создает блок — объект специального типа, который содержит неоцененную копию a. Это обработано как атомарное и остается неизменным оценкой.
block и области, выведенные этого, формируют иерархию типов данных, разработанных, чтобы обеспечить управление оценкой определенных подвыражений. Любой объект может быть помещен как содержимое в любой тип блока.
block является областью, Если d является какой-либо областью блока, d(a) создает блок, принадлежащий той области с содержимым a.
block(a) помещает свой аргумент в блок, не оценивая его. В порядке оценить a обычно прежде, чем поместить его в блок, используйте eval(hold(block)(a)).
Блоки являются инвариантными при оценке.
Блоки типа block являются атомарными: единственный операнд блока является самим блоком.
Последовательности могут также быть помещены в блоки. В случае block они не сглажены. Смотрите Пример 2.
Можно создать дальнейшие области блока с помощью наследования. Это особенно полезное для создания собственного evaluate или методов testtype. Смотрите Пример 4.
В случае вложенных блоков expr и unblock удаляют только наиболее удаленный блок.
Блок является своего рода контейнером, который защищает его содержимое от оценки:
y := 1: bl:= block(1 + y)
![]()
Блоки являются атомарными; таким образом y и 1 не видимы как операнды:
op(bl), nops(bl)
![]()
Несмотря на то, что блоки не являются арифметическими выражениями, некоторые основные арифметические операции заданы для них:
collect(x + bl + x*bl, bl)
![]()
delete y, bl
Содержимое блока может быть извлечено и оценило использование unblock:
y := 1: unblock(block(y))
![]()
delete y
Создайте блоки, которые представляют арифметические выражения. Для этого вам нужна ваша собственная область блока что перегрузки testtype:
domain myblock
inherits block;
category Cat::BaseCategory;
testtype:= (bl, T) -> if T = Type::Arithmetical or T = dom then
TRUE
else
block::testtype(bl, T)
end_if;
end_domain:Это позволяет вам, чтобы сделать нуль номера невидимым для средства анализа путем включения его в блок, но сохранить опцию, чтобы включить его в специальные функции:
f := sin(x+myblock(0))
![]()
Теперь можно управлять этим выражением, не будучи взволнован автоматическим упрощением:
expand(f)
![]()
eval(unblock(%))
![]()
|
Любой объект или последовательность объектов |
block создает объекты своего собственного типа.