Work with Contexts
- To: mathgroup at smc.vnet.net
- Subject: [mg35731] Work with Contexts
- From: "Hermann Schmitt" <schmitther at netcologne.de>
- Date: Sun, 28 Jul 2002 03:32:01 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
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