newDomain

Создайте новый тип данных (область)

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

newDomain(k)
newDomain(k, T)
newDomain(k, t)

Описание

newDomain(k) создает новую область с ключом k.

newDomain(k, T) создает копию доменного T с новым ключом k.

newDomain(k, t) создает новую область с ключом k и слотами из таблицы t.

Типы данных в MuPAD® называются областями. newDomain является низкоуровневой функцией для определения новых типов данных. Cf. соответствующая запись в Глоссарии для ссылок на документацию об областях и более удобных способах задать новые типы данных. Страница справки DOM_DOMAIN содержит учебный пример для определения новой области через newDomain.

Технически, область - что-то как таблица. Записи этой таблицы называются слотами или методами. Они служат для расширения функциональности стандартных функций MuPAD, таких как арифметические операции + и *, специальные математические функции exp и sin или символьные функции манипуляции simplify и normal, к объектам области модульным, объектно-ориентированным способом, без потребности изменить исходный код стандартной функции. Это известно как перегрузку.

Функциональный slot и эквивалентный оператор подача :: для определения и доступа к определенному слоту области. Функциональный op возвращает все слоты области.

Каждая область имеет выдающийся слот "key", который является его уникальной идентификацией. Не может быть никаких двух различных областей с тем же ключом. Как правило, но не обязательно, ключ является строкой. Однако ключ служит в основном в выходных целях и внутреннем. Обычно область сразу присвоена идентификатору после его создания, и вы получаете доступ к области через этот идентификатор.

Если область с данным ключом уже существует, newDomain(k) возвращает ту область; обе других формы вызова newDomain приводят к ошибке.

Примеры

Пример 1

Мы создаем новую область с ключом "my-domain". Этот ключ также используется для вывода, но без кавычек:

T := newDomain("my-domain")

Можно создать элементы этой области с функциональным new:

e := new(T, 42);
domtype(e)

С оператором слота :: можно задать новый слот или получить доступ к существующему:

op(T)

T::key, T::myslot

T::myslot := 42: op(T)

T::myslot^2

Если область с ключом k уже существует, то newDomain(k) не создает новую область, но возвращает существующую область вместо этого:

T1 := newDomain("my-domain"):
op(T1)

Обратите внимание на то, что вы не можете удалить область; команда delete T только удаляет значение идентификатора T, но не уничтожает область с ключом "my-domain":

delete T, T1:
T2 := newDomain("my-domain"):
op(T2);
delete T2:

Пример 2

Там не может существовать различные области с тем же ключом одновременно. Определение слота для области неявно изменяет все идентификаторы, которые имеют эту область как их значение:

T := newDomain("1st"): T1 := T:
op(T);
op(T1);

T1::mySlot := 42:
op(T);
op(T1);

Чтобы избежать этого, можно создать копию области. Необходимо зарезервировать новый, неиспользованный ключ для той копии:

T2 := newDomain("2nd", T):
T2::anotherSlot := infinity:
op(T);
op(T2);

delete T, T1, T2:

Пример 3

Можно предоставить области слоты уже при создании его:

T := newDomain("3rd",
  table("myslot" = 42, "anotherSlot" = infinity)):
op(T);
T::myslot, T::anotherSlot

delete T:

Параметры

k

Произвольный объект; обычно строка

T

Область

t

Слоты области: таблица

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

Объект типа DOM_DOMAIN.

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

Области MuPAD

Функции MuPAD