onCleanup

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

Синтаксис

cleanupObj = onCleanup(cleanupFun)

Описание

пример

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

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

Примеры

свернуть все

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

function [] = action()
f = figure;
finishup = onCleanup(@() myCleanupFun(f));
disp('Display Figure')
end

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

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

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

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

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

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

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

свернуть все

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

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

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

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

Пример: @() user_script

Пример: @() function(input)

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

Советы

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

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

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

Введенный в R2008a