gpt4 book ai didi

wolfram-mathematica - 如何在评估时删除输入单元格?

转载 作者:行者123 更新时间:2023-12-04 16:32:26 37 4
gpt4 key购买 nike

我想完成以下操作:在评估输入单元格时,它应该自毁(即删除自身)。我试图与 SelectionMove 一起破解一些东西和 NotebookDelete ,但没有得到我想要的。

以下是潜在的用例:

  • 该命令可能是一系列其他命令的简写,这些命令将动态生成并插入笔记本
  • 该命令可能仅用于副作用(例如设置笔记本选项或打开新笔记本);评估后将命令留在笔记本中没有任何意义并造成困惑

  • 编辑:根据巫师先生的说法,答案是 SelectionMove[EvaluationNotebook[], Previous, Cell]; NotebookDelete[]; .我不知道为什么它以前对我不起作用。下面是一些使用这个习语的代码。
    writeAndEval[nb_, boxExpr_] := (NotebookWrite[nb, 
    CellGroupData[{Cell[BoxData[boxExpr], "Input"]}]];
    SelectionMove[nb, Previous, Cell];
    SelectionMove[nb, Next, Cell];
    SelectionEvaluate[nb]);

    addTwoAndTwo[] := Module[{boxExpr},
    boxExpr = RowBox[{"2", "+", "2"}];
    SelectionMove[EvaluationNotebook[], Previous, Cell];
    NotebookDelete[];
    writeAndEval[EvaluationNotebook[], boxExpr];
    ]

    现在,正在运行 addTwoAndTwo[]删除原始输入并使其看起来好像您已经评估了“2+2”。当然,你可以做各种各样的事情,而不必打印到笔记本上。

    编辑 2:Sasha 的抽象非常优雅。如果您对它的“现实世界”用法感到好奇,请查看我在“您的工具包中有什么”问题中发布的代码: What is in your Mathematica tool bag?

    最佳答案

    要影响所有输入单元格,请评估这是笔记本:

    SetOptions[EvaluationNotebook[], CellEvaluationFunction -> 
    ( (
    SelectionMove[EvaluationNotebook[], All, EvaluationCell]; NotebookDelete[];
    ToExpression@#
    )&)
    ]

    如果您只想影响一个单元格,则选择该单元格并使用选项检查器设置 CellEvaluationFunction如上。

    关于wolfram-mathematica - 如何在评估时删除输入单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5908111/

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