DOM_PROC_ENV
Тип данных сред процедуры
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
Среды процедуры являются в основном эфемерными объектами и, как только редко замечает пользователь (и еще более редко полезные, исследуют). Среда процедуры представляет процедуру, которая в настоящее время выполняется: формальные параметры и локальные переменные имеют значения.
Среды процедуры действительно редко становятся видимыми, и вы не должны управлять ими непосредственно. Они служат только одной цели: если процедура сгенерирована в другой процедуре, имена переменных в теле внутренней процедуры, которые не объявляются локальные, там относятся к именам во внешней процедуре, если они объявляются локальные во внешней процедуре. (См. Руководство по программированию для получения дополнительной информации о правилах определения областей видимости для MuPAD®.), Следовательно, внутренняя процедура должна содержать информацию о текущих значениях локальных переменных внешней процедуры. Следовательно, состояние внешней процедуры закодировано в объект типа DOM_PROC_ENV
, и что объект хранится в возвращенной процедуре как ее двенадцатый операнд.
Вы никогда не должны генерировать объекты этого типа. Нет никаких доступных операций.
Единственный случай, в котором необходимо столкнуться со средой процедуры, следующий: внешняя процедура возвращает внутреннюю процедуру в зависимости от формальных параметров или локальных переменных внешней процедуры:
outer := proc(x) option escape; begin /* inner procedure to return : */ y -> x + y end_proc: add5 := outer(5)
Несмотря на (немного запутывающий) вывод, x
имеет особое значение здесь: это указывает на параметр x
outer
. Тот параметр в настоящее время имеет значение 5
и не будет больше изменяться. Чтобы смочь получить доступ к тому значению, конкретный экземпляр outer
в состоянии того, чтобы быть выполняемым должен храниться в add5
:
expr2text(op(add5, 12))
Количество операндов среды процедуры зависит от количества локальных и сохраненных переменных внешней процедуры. Детали об операндах остаются недокументированными.
Целые числа, появляющиеся в выводе объектов типа DOM_PROC_ENV
, не имеют никакого математического значения; они обозначают положения в памяти.