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
.
Мы создаем доменный элемент и затем заменяем его первый операнд:
d := newDomain("1st"): e := new(d, 1, 2, 3): extsubsop(e, 1 = 5)
Это не изменяет значение e
:
e
delete d, e:
Доменный тип элемента может быть изменен, заменив его 0-th операнд:
d := newDomain("some_domain"): e := new(d, 2): extsubsop(e, 0 = Dom::IntegerMod(5))
delete d, e:
Мы заменяем шестым операндом доменного элемента, который имеет меньше чем шесть операндов. В таких случаях вставляется соответствующее количество NIL
:
d := newDomain("example"): e := new(d, 1, 2, 3, 4): extsubsop(e, 6 = 8)
delete d, e:
Мы заменяем первым операндом доменного элемента e
последовательностью с тремя элементами. Они становятся первыми тремя операндами результата; второй операнд e
становится четвертым операндом результата и так далее. Эта новая нумерация состоит уже в действительности в том, когда вторая замена выполняется:
d := newDomain("example"): e := new(d, 1, 2, 3, 4): extsubsop(e, 1 = (11, 13, 17), 2 = (29, 99))
delete d, e:
Мы задаем область с ее собственным методом оценки. Этот метод распечатывает свой аргумент, таким образом, что мы видим, называется ли он. Затем мы задаем элемент нашей области.
d := newDomain("anotherExample"): d::evaluate := x -> (print("Argument:", x); x): e := new(d, 3)
Мы можем теперь смотреть все оценки, которые происходят: extsubsop
оценивает свои аргументы, выполняет желаемую замену, но не оценивает результат замены:
extsubsop(e, 1 = 0)
delete d, e:
extsubsop
применился к объекту от урожаев типа ядра тот же результат как subsop
:
extsubsop([1,2,3], 2=4), subsop([1,2,3], 2=4)
|
Произвольный объект MuPAD |
|
Неотрицательные целые числа |
|
Произвольные объекты MuPAD |
Входной объект с замененными операндами.