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)
属性和关系 (3)
注意,如果传递在更早前的参数就已经开始,则会发生清除命令的计算:
初始化和清除都在 AbortProtect 中有效封装:
Wolfram Research (2020),WithCleanup,Wolfram 语言函数,https://reference.wolfram.com/language/ref/WithCleanup.html.
文本
Wolfram Research (2020),WithCleanup,Wolfram 语言函数,https://reference.wolfram.com/language/ref/WithCleanup.html.
CMS
Wolfram 语言. 2020. "WithCleanup." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/WithCleanup.html.
APA
Wolfram 语言. (2020). WithCleanup. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/WithCleanup.html 年