3

When set context unique to this notebook:

ClearAll @@ { $Context<>"*" } 

Clear["`*"] 

can both clear the variables I assigned. I just wonder what's the difference between them? Are they interchangeable?

Kuba
  • 136,707
  • 13
  • 279
  • 740

1 Answers1

3

Clear vs. ClearAll

Is answered here: Good clearing practices

$Context<>"*" vs. "`*":

99% of the time it is the same thing.

See tutorial/Contexts: "`name a symbol in the current context"

See also ref / ClearAll / Examples / Applications / 2nd example

So how can it be different? If it is defined and evaluated in a different context than the context of the moment of using it. Here is an example:

BeginPackage["MyContext`"]

ClearMe[] := ClearAll  @ clearSpec1;

clearSpec1 = $Context <> "*";
clearSpec2 = "`*";

EndPackage[]

Now, if you call ClearMe[] it will correctly clear MyContext`* even though the current context is probably Global`. Had clearSpec2 been used you would clear Global`.

Ok, pretty artificial example but you get the point.

Kuba
  • 136,707
  • 13
  • 279
  • 740