Ответ 1
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
заключается в том, что интерфейс ноутбука включает только известные символы, когда вы выбираете Edit > Complete Selection (или на Mac, нажмите Command-K).