Re: Options for my own Packages
- To: mathgroup at smc.vnet.net
- Subject: [mg44258] Re: Options for my own Packages
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Fri, 31 Oct 2003 03:01:41 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
To answer a question on this subject David Park gave the following example:
Foo::usage = "Foo[x, opts...] is a routine that demonstrates the use of
options. It returns
p1 x^p2 where p1 and p2 are the values of the options FooParameter1 and
FooParameter2.";
FooParameter1::usage = "FooParameter1 is an option for Foo.";
FooParameter2::usage = "FooParameter2 is an option for Foo.";
Options[Foo] = {FooParameter1 -> 1, FooParameter2 -> 2};
Foo[x_, opts___?OptionQ] := Module[{p1, p2},
p1 = FooParameter1 /. {opts} /. Options[Foo];
p2 = FooParameter2 /. {opts} /. Options[Foo];
p1 x^p2
]
-------------------------------
To read my discussion on this subject goto
http://www.verbeia.com/mathematica/tips/Tricks.html
Then goto the section for (Options, OptionQ).
Instead I use the following to get the option settings:
Options[Foo] = {FooParameter1 -> 1, FooParameter2 -> 2};
Foo[x_, opts___?OptionQ] := Module[{p1, p2},
{ p1, p2 } ={ FooParameter1, FooParameter2 } /. Flatten[{ opts,
Options[Foo] }];
p1 x^p2
]
----------------------
This allows us give a list of options and get the desired result e.g..
In[4]:= Foo[y, {FooParameter1->a, FooParameter2->b} ]
Out[4]= a*y^b
----------------------
Regards,
Ted Ersek