copyClosureКопирует лексическое закрытие процедуры
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
copyClosure(f)
copyClosure(f) копирует лексическое закрытие среды процедуры или процедуры f.
Обычно, когда процедура копируется, например, путем присвоения его идентификатору, лексическое закрытие процедуры не копируется. С помощью скопированной процедуры можно изменить лексическое закрытие исходной процедуры. Таким образом лексическое закрытие процедуры показывает так называемый ссылочный эффект.
copyClosure может использоваться, чтобы скопировать лексическое закрытие процедуры. Изменения в закрытии копии больше не влияют на закрытие исходной процедуры.
Закрытия реализованы средами процедуры (тип ядра DOM_PROC_ENV) в MuPAD®. copyClosure работает путем копирования всей лексически заключающей среды процедуры процедуры.
copyClosure май также использоваться, чтобы скопировать среду процедуры и все ее лексически заключающие среды только.
Закрытия процедуры показывают ссылочный эффект: процедура f сгенерированный gen изменяет его закрытие через переменную i. “Нормальная” копия g 'off' заменяет переменную в том же закрытии, как замечен путем повторного вызова 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()
![]()
|
Среда процедуры или процедуры, которая будет скопирована |
Скопированная среда процедуры или процедуры