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 удаляют только наиболее удаленный блок.

Примеры

Пример 1

Блок является своего рода контейнером, который защищает его содержимое от оценки:

y := 1:
bl:= block(1 + y)

Блоки являются атомарными; таким образом y и 1 не видимы как операнды:

op(bl), nops(bl)

Несмотря на то, что блоки не являются арифметическими выражениями, некоторые основные арифметические операции заданы для них:

collect(x + bl + x*bl, bl)

delete y, bl

Пример 2

Блок может также содержать последовательность; выравнивание подавлено:

block((x, y),z)

Пример 3

Содержимое блока может быть извлечено и оценило использование unblock:

y := 1:
unblock(block(y))

delete y

Пример 4

Создайте блоки, которые представляют арифметические выражения. Для этого вам нужна ваша собственная область блока что перегрузки 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(%))

Параметры

a

Любой объект или последовательность объектов

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

block создает объекты своего собственного типа.

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

Функции MuPAD