Options and Contexts
- To: mathgroup at yoda.physics.unc.edu (mathgroup)
- Subject: Options and Contexts
- From: gt9397a at prism.gatech.edu (Daryl S. Reece)
- Date: Thu, 14 Apr 1994 00:57:24 -0400 (EDT)
Dear Mathgroupers-
Can anyone help me with this problem.
I have a function that I want to define in its own context.
I want to assign options to this function within its own context.
I then want to be able to call the function from the Global
context with options and not have to differentiate between
the context of options assigned at the global level
and the default values. An example will help.
BeginPackage["Test`"];
Tester::usage = "Tester[opts___] acts based on options.";
Opt1::usage = "Option for Tester.";
Begin["Test`Private`"];
Options[Tester] = {Opt1->A};
Tester[opts___] :=
Module[{opt1},
opt1 = Opt1/.{opts}/.Options[Tester];
Print["Equality of option and A ", opt1===A];
Print["Equality of option and B ", opt1===B];
]
End[];
EndPackage[];
Tester[]
Equality of option and A True
Equality of option and B False
Tester[Opt1->B]
Equality of option and A False
Equality of option and B False
Tester[Opt1->Test`Private`B]
Equality of option and A False
Equality of option and B True
These last two examples show that any options assigned at
the global level cannot be compared within the Private contexts
without specifically declaring their contexts. This is a problem
since I would like to be able to call the package from any context
and have it behave the same. Thanks ahead of time for the help.
--
Daryl Reece
Internet: dreece at cad.gatech.edu or gt9397a at prism.gatech.edu
Compuserve: 71620,1262
(404) 894-9568(office), (404) 888-0426(home), (404) 894-9313(fax)
School of Aerospace Engineering
Georgia Institute of Technology
Atlanta, GA 30332-0150