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
приводят к ошибке.
Мы создаем новую область с ключом "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:
Там не может существовать различные области с тем же ключом одновременно. Определение слота для области неявно изменяет все идентификаторы, которые имеют эту область как их значение:
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:
Можно предоставить области слоты уже при создании его:
T := newDomain("3rd", table("myslot" = 42, "anotherSlot" = infinity)): op(T); T::myslot, T::anotherSlot
delete T:
Объект типа DOM_DOMAIN
.