WithCleanup
WithCleanup[expr,cleanup]
expr を評価し,expr の評価中に,放棄,スロー等が生成された場合でも,結果を返す前に cleanup を実行する.
WithCleanup[init,expr,cleanup]
expr の評価の前に init を評価し,init と cleanup の両方の放棄やスロー等をブロックする.
詳細
- WithCleanup内の init と cleanup では,次のタイプの操作がさまざまな方法でブロックされる.
-
中断 Abortおよびインタラクティブな中断 制約条件 TimeConstrainedやMemoryConstrainedに基づいた終了 コントロールの転送 Throw,Confirm,Goto,Break,Continue … - init の評価中に中断が起動されても,即座にそうなる訳ではなく,expr は評価されないが cleanup は評価される.
- expr の評価中に中断が起動されると,その評価は中断されるが cleanup は実行される.
- cleanup の評価中に中断が起動されても,cleanup の評価が終了するまで延期される.
- TimeConstrained[... WithCleanup[...]... ]等の構築によって外部的に生成された制約は,WithCleanupの中では中断のように振る舞う
- WithCleanup[...]の外部へのコントロールの転送が init あるいは expr の中で起こると,init あるいは expr の評価が終了され,cleanup が評価され,その後で転送が行われる.
- コントロールの転送は,cleanup の評価中に起こった場合は延期されない.
例題
すべて開くすべて閉じるスコープ (2)
アプリケーション (1)
特性と関係 (3)
初期化またはクリーンアップの最中に中断されても,これらの評価の終了を妨げはしない:
任意の引数での外部制御転送は,その引数の評価を即座に終了する:
転送が前の引数で開始された場合はクリーンアップの評価が行われるので注意のこと:
初期化とクリーンアップは,事実上,AbortProtectで包み込まれる:
テキスト
Wolfram Research (2020), WithCleanup, Wolfram言語関数, https://reference.wolfram.com/language/ref/WithCleanup.html.
CMS
Wolfram Language. 2020. "WithCleanup." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/WithCleanup.html.
APA
Wolfram Language. (2020). WithCleanup. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/WithCleanup.html