|
[Date Index]
[Thread Index]
[Author Index]
Re: How to call 'Clear' from within a function?
- To: mathgroup at smc.vnet.net
- Subject: [mg124865] Re: How to call 'Clear' from within a function?
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Fri, 10 Feb 2012 05:51:31 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201202091038.FAA18317@smc.vnet.net>
Clear[x];
x
x = 2
Clear[x] (* you clear symbols not strings *)
x
x
2
x
ClearAll[f];
SetAttributes[f, HoldFirst];
f[arg_] := (Print[Unevaluated[arg]]; Clear[arg]);
x = 2
f[x]
x
2
x
x
Bob Hanlon
On Thu, Feb 9, 2012 at 5:38 AM, James Stein <mathgroup at stein.org> wrote:
> Before trying to encapsulate 'Clear' in a function, I try this:
>
> Clear [ x ] ;
> x
> x = 2
> Clear [ ToString [ Unevaluated [ x ] ] ] ;
> x
>
> And I expect to get three lines of output: x, 2, and x
> But instead I get these three lines output: x, 2 and 2.
>
> What do I misunderstand, or need to know?
>
> I observe that a function CAN obtain the name of a symbol passed to it:
>
> ClearAll [ f ] ;
> SetAttributes [ f, HoldFirst ] ;
> f [ arg_ ] := ( Print [ Unevaluated [ arg ] ] ;
> Clear [ ToString [ Unevaluated [ arg ] ] ] ) ;
> x = 2; (* assign a value to 'x' *)
> f [ x ] ; (* 'f' can print the symbol 'x' ! *)
> x (* but 'x' still has value '2' ; the 'Clear' had no effect !? *)
>
> Similar problems with trying to call 'Set' from within a function....
Prev by Date:
Baffled by FindMinimum
Next by Date:
Re: Something other than PlotStyle to change look of graphs
Previous by thread:
How to call 'Clear' from within a function?
Next by thread:
Re: How to call 'Clear' from within a function?
|