matlab清理程序onCleanup

动机

用户编写完M文件后,还有最后一项任务要完成:关闭文件,删除临时文件等。Matlab提供了一个函数用作后面的清理,有点类似于面向对象语言中的析构函数,这就是onCleanup

用法

cleanupObj = onCleanup(cleanupFun)

其中cleanupFun是一个函数句柄(无输入值),当cleanupObj被清理时调用cleanupFun。因此cleanupObj必须有,如果没有就会有警告(一般来说,这个函数是在M结束后调用,但是这个也不尽然,只要是这个cleanupFun被清理了,就会调用cleanupFun。因为在M文件结束后,所有的临时变量会被清理,所以M文件结束后就会自动调用cleanupFun)

另外,在一个M文件中可以有多个onCleanup语句,当相应的变量被清理时,它们都会执行。由于变量清理的顺序不能确定,所以它们执行的顺序也不能确定。如果对执行顺序有要求,最好把它们都放到一个清理函数中吧。

例子1

function y = Add2(x)
y = x + 2;
c = onCleanup(@Hello);

function Hello
fprintf('Hello\n');

运行

d=Add(3);

输出

Hello

例子2

function [y,c] = Add2(x)
y = x + 2;
c = onCleanup(@Hello);

function Hello
fprintf('Hello\n');


运行

[d,c]=Add(3);

无输出
此时运行

clear c

输出

Hello

从例子2,大家明白了返回值得重要性了吧

技巧

清理函数(就是上面的那个cleanupFun)是一个无输入值得函数,如果大家想给清理函数传递参数,怎么办?
用匿名函数!

c = onCleanup( @() fclose('file.m'));

再比如

c = onCleanup(@()function(input))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值