主要内容

このペジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

onCleanup

関数完了時のクリンアップ作業

説明

cleanupObj = onCleanup (cleanupFunは,破棄されるときに関数cleanupFunを実行するオブジェクトを作成します。MATLAB®は正常終了であるか,エラやCtrl + Cなどの強制終了であるかに関係なく,関数が終了する際にすべてのロカル変数を暗黙的にクリアします。

関数外でcleanupObjを参照したり渡す場合には,その関数が終了してもcleanupFunは動作しません。代わりに,matlabがそのオブジェクトを破棄した際には必ず動作します。

すべて折りたたむ

action.mに以下のコドを保存し,コマンドウィンドウで行动と入力します。

函数行动disp (“显示图”) f =图;清理= onCleanup (@ () myCleanupFun (f));暂停(1)结束函数myCleanupFun (f) disp (“关闭图”关闭(f)结束
显示图关闭图

自分で作成したスクリプトをonCleanupオブジェクトに渡して,MATLABがクリーンアップオブジェクトを破棄したときにスクリプトが実行されるようにします。

以下のコドをcleanup.mに保存します。

cd (tempdir) disp (“您现在位于临时文件夹中”

youraction.mに以下のコドを保存し,コマンドウィンドウでyouractionと入力します。

函数youraction cleanup = onCleanup(@cleanup);disp (“执行代码”结束
您现在位于临时文件夹中

入力引数

すべて折りたたむ

クリンアップ作業。関数ハンドルとして指定します。

プログラムファルでは,任意の数のonCleanupオブジェクトを宣言できます。しかし,クリーンアップ作業が実行順序に依存する場合には,適切なクリーンアップコマンドを含むスクリプトや関数を呼び出すオブジェクトを1つだけ定義する必要があります。

クリンアップ作業を呼び出す無名関数ハンドルを使用する必要があります。これにより,クリンアップ関数に引数を渡すことができるようになります。

例:@()文件关闭(“file.m”)

例:@user_script

デタ型:function_handle

ヒント

  • クリンアップ中は入れ子関数の使用を避けるようにしてください。クリーンアップ関数が読み取る前に,MATLABが入れ子関数に使用される変数を消去する可能性があります。

  • 自分のプログラム内に複数のクリーンアップオブジェクトがある場合には,MATLABではこれらのオブジェクトを破棄する順序は保証されません。クリンアップ関数の順序が問題となる場合には,すべての作業に対してonCleanupオブジェクトを1だけ定義するようにします。

  • onCleanupオブジェクトを保存すると,matlabは警告を表示し,cleanupFunクリンアップ作業を保存しません。

拡張機能

R2008aで導入