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