gpt4 book ai didi

wolfram-mathematica - 如何设置全局 Abort 处理程序?

转载 作者:行者123 更新时间:2023-12-04 16:36:13 28 4
gpt4 key购买 nike

在回答这个 question , 我 suggested OP 在他的笔记本开头打开一个流并在最后关闭它。但是,如果 Abort生成后,流将保持打开状态,如果他们在未先检查的情况下尝试再次打开它,则会造成严重破坏。如果流只需要单个函数,solution会很简单,但它是整个笔记本所必需的。显然,可以添加一个检查来查看流是否已经打开,但是有没有办法绑定(bind)到全局 Abort处理程序,以便可以全局处理此类问题?

编辑 : 具体来说,我正在寻找一种在 Abort 时运行任意代码的方法。无论代码当前是否在 CheckAbort 内部运行,都会发生.本质上,我想设置一个全局 Abort处理程序,如果可能的话。如果这存在于笔记本级别,那就更好了。

最佳答案

作为替代方案,如果您想将效果本地化到单个笔记本,您可以执行以下操作:

SetOptions[EvaluationNotebook[], 
CellEvaluationFunction ->
(ToExpression[#, StandardForm,
Function[
Null,
Module[{aborted = $Aborted},
Internal`WithLocalSettings[
Null,
aborted = (ReleaseHold[Most[Hold[##]]];Last[Hold[##]]),
AbortProtect[
If[aborted === $Aborted,
Print["Did cleanup"]; Abort[]
]]]],
HoldAll]] &)
]

注意:重写以纳入@Alexey 的建议

注 2 修改为在单个单元格中容纳多个输入。在这种情况下,除了最后一个输出之外的所有输出都被抑制

在哪里替换 Print["Did cleanup"]使用您拥有的任何清理代码编写代码。

关于wolfram-mathematica - 如何设置全局 Abort 处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7743803/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com