copyClosure

Копирует лексическое закрытие процедуры

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

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

Синтаксис

copyClosure(f)

Описание

copyClosure(f) копирует лексическое закрытие среды процедуры или процедуры f.

Обычно, когда процедура копируется, например, путем присвоения его идентификатору, лексическое закрытие процедуры не копируется. С помощью скопированной процедуры можно изменить лексическое закрытие исходной процедуры. Таким образом лексическое закрытие процедуры показывает так называемый ссылочный эффект.

copyClosure может использоваться, чтобы скопировать лексическое закрытие процедуры. Изменения в закрытии копии больше не влияют на закрытие исходной процедуры.

Закрытия реализованы средами процедуры (тип ядра DOM_PROC_ENV) в MuPAD®. copyClosure работает путем копирования всей лексически заключающей среды процедуры процедуры.

copyClosure может также использоваться, чтобы скопировать среду процедуры и все ее лексически заключающие среды только.

Примеры

Пример 1

Закрытия процедуры показывают ссылочный эффект: процедура f, сгенерированный gen, изменяет свое закрытие через переменную i. “Нормальный” g копии f заменяет переменную в том же закрытии, как замечен путем повторного вызова f по сравнению с g.

gen:= proc()
    option escape;
    local i;
begin
    i := 0;
    proc() begin i := i+1 end
end:
f := gen():
g := f:
f(), g(), f(), g()

Если вы теперь генерируете f снова путем вызова gen, но копируете g путем вызова copyClosure, то g имеет свое собственное закрытие и теперь более длительные изменения переменная i в закрытии f.

f := gen():
g := copyClosure(f):
f(), g(), f(), g()

Параметры

f

Среда процедуры или процедуры, которая будет скопирована

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

Скопированная среда процедуры или процедуры

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

Функции MuPAD