onCleanup

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

Описание

пример

cleanupObj = onCleanup(cleanupFun) создает объект, который, когда уничтожено, выполняет функциональный cleanupFunMATLAB® неявно очищает все локальные переменные при завершении функции, ли нормальным завершением или принудительным выходом, таким как ошибка или 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