exponenta event banner

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 MATLAB отображает предупреждение и не сохраняет cleanupFun задача очистки.

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

.
Представлен в R2008a