extsubsop

Замените операндами доменного элемента

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

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

Синтаксис

extsubsop(d, i1 = new1, i2 = new2, …)

Описание

extsubsop(d, i = new) возвращает копию доменного элемента d с i- операнд th внутреннего представления заменяется new.

Внутренне, доменный элемент может состоять из произвольного числа объектов. extsubsop замены один или несколько из этих объектов, не проверяя, значима ли замена.

Примечание

Операнды элементов областей библиотеки MuPAD® должны удовлетворить определенным (недокументированным) условиям; используйте extsubsop только для ваших собственных областей. Это - хороший стиль программирования, чтобы использовать extsubsop только в низкоуровневых доменных методах.

extsubsop возвращает модифицированную копию объекта, но не изменяет сам объект.

Нумерация операндов совпадает с тем, используемым extop.

Если 0-th операнд должен быть заменен, соответствующее новое значение должно быть областью типа DOM_DOMAIN; extsubsop затем заменяет область d этой новой областью.

При попытке заменить i- операнд th с i превышая фактическое количество операндов, extsubsop сначала увеличивает число операндов путем добавления как многие NILпо мере необходимости и затем выполняет замену. См. Пример 3.

Когда i- операнд th заменяется последовательностью выражения k элементы, каждый из этих элементов становится отдельным операндом результата, индексированного от i к i+k-1. Остающиеся операнды d смещены направо соответственно. Эта новая нумерация уже в действительности для остающихся замен в том же вызове extsubsop. См. пример 4.

Пустой объект null() становится операндом результата, когда им подставляются в объект.

После выполнения замены, extsubsop не оценивает результат еще раз. См. Пример 5.

В отличие от функционального subsop, extsubsop не может быть перегружен.

Как extop и extnops, extsubsop может быть применен к объектам области ядра. В этом случае extsubsop ведет себя как subsop.

Примеры

Пример 1

Мы создаем доменный элемент и затем заменяем его первый операнд:

d := newDomain("1st"): e := new(d, 1, 2, 3): extsubsop(e, 1 = 5)

Это не изменяет значение e:

e

delete d, e:

Пример 2

Доменный тип элемента может быть изменен, заменив его 0-th операнд:

d := newDomain("some_domain"): e := new(d, 2): 
extsubsop(e, 0 = Dom::IntegerMod(5))

delete d, e:

Пример 3

Мы заменяем шестым операндом доменного элемента, который имеет меньше чем шесть операндов. В таких случаях, соответствующем количестве NILвставляется:

d := newDomain("example"): e := new(d, 1, 2, 3, 4):
extsubsop(e, 6 = 8)

delete d, e:

Пример 4

Мы заменяем первым операндом доменного элемента e последовательностью с тремя элементами. Они становятся первыми тремя операндами результата; второй операнд e становится четвертым операндом результата, и так далее. Эта новая нумерация состоит уже в действительности в том, когда вторая замена выполняется:

d := newDomain("example"): e := new(d, 1, 2, 3, 4):
extsubsop(e, 1 = (11, 13, 17), 2 = (29, 99))

delete d, e:

Пример 5

Мы задаем область с ее собственным методом оценки. Этот метод распечатывает свой аргумент, таким образом, что мы видим, называется ли он. Затем мы задаем элемент нашей области.

d := newDomain("anotherExample"): 
d::evaluate := x -> (print("Argument:", x); x):
e := new(d, 3)

Мы можем теперь смотреть все оценки, которые происходят: extsubsop оценивает его аргументы, выполняет желаемую замену, но не оценивает результат замены:

extsubsop(e, 1 = 0)

delete d, e:

Пример 6

extsubsop примененный объект от типа ядра дает к тому же результату как subsop:

extsubsop([1,2,3], 2=4), subsop([1,2,3], 2=4)

Параметры

d

Произвольный объект MuPAD

i1, i2, …

Неотрицательные целые числа

new1, new2, …

Произвольные объекты MuPAD

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

Входной объект с замененными операндами.

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

Области MuPAD

Функции MuPAD