gpt4 book ai didi

wolfram-mathematica - Mathematica 中清除和删除的区别

转载 作者:行者123 更新时间:2023-12-03 23:46:32 32 4
gpt4 key购买 nike

在 Mathematica 中,ClearAll 的文档状态:

ClearAll[symb1, symb2, ...]
clears values, definitions, attributes, messages, and defaults with symbols.



它还支持类似的格式,它可以清除与输入字符串模式匹配的任何值/定义:
ClearAll["form1", "form2", ...]

但还有功能 Remove ,对此文档说:

Remove[symbol1, ...]
removes symbols completely, so that their names are no longer recognized by Mathematica.



它还支持基于相同模式的字符串输入 ClearAll支持。

对我来说,这两个函数似乎完成了完全相同的事情。使用其中一个有什么实际区别吗?

我知道如果我给一个符号一个属性, Clear不会删除它,但 ClearAllRemove将要。但好像 RemoveClearAll正在做同样的事情。

最佳答案

ClearAll将符号留在符号表中:

In[1]:= x=7;

In[2]:= ?x
Global`x

x = 7

In[3]:= ClearAll[x]

In[4]:= ?x
Global`x
Remove从符号表中删除它:
In[5]:= Remove[x]

In[6]:= ?x

Information::notfound: Symbol x not found.

使用的原因之一 Remove而不是 ClearAll是如果一个符号在 $ContextPath 下隐藏另一个符号。这是一个人为的例子:
In[1]:= $ContextPath = { "Global`", "System`" };

In[2]:= Global`Sin[x_] := "hello"

Sin::shdw: Symbol Sin appears in multiple contexts {Global`, System`}
; definitions in context Global`
may shadow or be shadowed by other definitions.

In[3]:= Sin[1.0]

Out[3]= hello

In[4]:= ClearAll[Sin]

In[5]:= Sin[1.0]

Out[5]= Sin[1.]

In[6]:= Remove[Sin]

In[7]:= Sin[1.0]

Out[7]= 0.841471

使用 Remove 的另一个原因是当您选择“编辑”>“完整选择”(或在 Mac 上,按 Command-K)时,笔记本界面仅包含已知符号。

关于wolfram-mathematica - Mathematica 中清除和删除的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512120/

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