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.
Мы создаем доменный элемент и затем заменяем его первый операнд:
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 |
Входной объект с замененными операндами.