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.