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 по мере необходимости и затем выполняет замену. Cf. Пример 3.

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

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

После выполнения замены extsubsop не оценивает результат еще раз. Cf. Пример 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