Re: Work with Contexts
- To: mathgroup at smc.vnet.net
- Subject: [mg35757] Re: Work with Contexts
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Mon, 29 Jul 2002 03:13:34 -0400 (EDT)
- References: <ai06l0$19t$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hermann,
> My question is:
> Why is the variable "klasse" also defined in the context Global?
klasse is created in the context "Global`" when the assignment
oo`new12[] := (Print["Name klasse - Begin"];
Print["$Context: ", $Context];
Print["$ContextPath: ", $ContextPath];
ToExpression["klasse"];
Print["Context of klasse: ", Context[klasse]];
oo`resumeContext[];
Print["Name klasse - End"];)
is converted into internal form (with contexted symbols) prior to
evaluation.
This is before
oo`new11["Rechteck"];
is evaluated
--
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565
"Hermann Schmitt" <schmitther at netcologne.de> wrote in message
news:ai06l0$19t$1 at smc.vnet.net...
> Hello,
> I have the following program:
>
> oo`newContext[ctxp_] := (
> BeginPackage[ctxp[[1]]];
> )
> oo`resumeContext[] := (
> EndPackage[];
> $ContextPath = Drop[$ContextPath, 1];
> )
> oo`new11[x_] := (
> Print["Begin new11"];
> klassnam = x;
> ctx = klassnam <> "`";
> oo`newContext[{ctx}];
> );
> oo`new12[] := (
> Print["Name klasse - Begin"];
> Print["$Context: ", $Context];
> Print["$ContextPath: ", $ContextPath];
> ToExpression["klasse"];
> Print["Context of klasse: ", Context[klasse]];
> oo`resumeContext[];
> Print["Name klasse - End"];
> );
> Print["Begin Programm:"];
> Print["$Context: ", $Context];
> Print["$ContextPath: ", $ContextPath];
> oo`new11["Rechteck"];
> oo`new12[];
> Print["after new12:"];
> Print["$Context: ", $Context];
> Print["$ContextPath: ", $ContextPath];
>
> I get the following results:
>
> Begin Programm:
> $Context: Global`
> $ContextPath: {Global`, System`}
> Begin new11
> Name klasse - Begin
> $Context: Rechteck`
> $ContextPath: {Rechteck`, System`}
> klasse
> klasse::shdw: Symbol klasse appears in multiple contexts {Rechteck`,
> Global`}
> ; definitions in context Rechteck`
> may shadow or be shadowed by other definitions.Context of klasse:
> Global`
> Name klasse - End
> after new12:
> $Context: Global`
> $ContextPath: {Global`, System`}
> In[14]:=
>
> My question is:
> Why is the variable "klasse" also defined in the context Global?
>
> Hermann Schmitt
>
>
>
- Follow-Ups:
- Re: Re: Work with Contexts
- From: "Hermann Schmitt" <schmitther@netcologne.de>
- Re: Re: Work with Contexts