onCleanup

Очистка задач после завершения функции

Описание

пример

cleanupObj = onCleanup(cleanupFun) создает объект, который при уничтожении выполняет функцию cleanupFun. MATLAB® неявно очищает все локальные переменные при завершении функции, будь то обычным завершением или принудительным выходом, например ошибкой или Ctrl+C.

Если вы ссылаетесь или проходите cleanupObj вне вашей функции, тогда cleanupFun не запускается, когда эта функция завершается. Вместо этого он запускается всякий раз, когда MATLAB уничтожает объект.

Примеры

свернуть все

Сохраните следующий код в action.m и тип action в Командном окне.

function action
disp('Display Figure')
f = figure;
cleanup = onCleanup(@()myCleanupFun(f));
pause(1)
end

function myCleanupFun(f)
disp('Close Figure')
close(f)
end
Display Figure
Close Figure

Передайте свой собственный скрипт в onCleanup объект так, что он выполняется, когда MATLAB уничтожает объект очистки.

Сохраните следующий код в cleanup.m.

cd(tempdir)
disp('You are now in the temporary folder')

Сохраните следующий код в youraction.m и тип youraction в Командном окне.

function youraction
cleanup = onCleanup(@cleanup);
disp('Execute Code')
end
Execute Code
You are now in the temporary folder

Входные параметры

свернуть все

Задача очистки, заданная как указатель на функцию.

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

Для вызова задачи очистки следует использовать указатель анонимной функции. Это позволяет передавать аргументы в функцию очистки.

Пример: @()fclose('file.m')

Пример: @user_script

Типы данных: function_handle

Совет

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

  • Если ваша программа содержит несколько объектов очистки, MATLAB не гарантирует порядок уничтожения этих объектов. Если порядок ваших функций очистки имеет значение, задайте один onCleanup объект для всех задач.

  • Если вы сохраняете onCleanup Объект отображает предупреждение и не сохраняет cleanupFun задача очистки.

Расширенные возможности

.
Введенный в R2008a