Main Content

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 中推出