ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

onCleanup

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

構文

  • cleanupObj = onCleanup(cleanupFun)

説明

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

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

すべて折りたたむ

関数実行後に Figure を閉じる

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

入力引数

すべて折りたたむ

cleanupFun — クリーンアップ作業関数ハンドル

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

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

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

例: @() fclose('file.m')

例: @() user_script

例: @() function(input)

データ型: function_handle

詳細

すべて折りたたむ

ヒント

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

  • 自分のプログラム内に複数のクリーンアップ オブジェクトがある場合には、MATLAB ではこれらのオブジェクトを破棄する順序は保証されません。

  • クリーンアップ関数の順序が問題となる場合には、すべての作業に対して onCleanup オブジェクトを 1 つだけ定義するようにします。

この情報は役に立ちましたか?