Re: Options in self-defined functions
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1668] Re: [mg1612] Options in self-defined functions
- From: Allan Hayes <hay%haystack at christensen.cybernetics.net>
- Date: Tue, 11 Jul 1995 04:47:16 -0400
Lancelot <Scott.A.Hill at williams.edu>
in [mg1612] Options in self-defined functions
wrote
> I would like to have a function I've written use options
> rather than parameters,... .Can I do it, and if so, how?
Scott,
Here is an example
Define the default values of the options
Options[f] = {delta->.03, epsilon->0.0005, trace->False};
The code allows for these values to be temporarily overridden
f[x_,y_, opts___?OptionQ] :=
Module[{del,eps, tra},
(*extract the values: the first value for each option
name is used*)
{del,eps,tra} =
{delta,epsilon,trace}/.{opts}/.Options[f];
(*use the values*)
{x,y,del, eps,tra}
]
Example
f[3,4, trace->True,epsilon -> .00001]
{3, 4, 0.03, 0.00001, True}
You can redefine Options[f] like any other function value:
Options[f] = {delta->.5, epsilon->0.6, trace->True};
Or you can use the special function SetOptions to change some of
the options.
SetOptions[f,epsilon -> .07]
{delta -> 0.03, epsilon -> 0.07, trace -> False}
SetOptions will also warn you about illegitimate option names:
SetOptions[f,hh->kk]
SetOptions::optnf: hh is not a known option for f.
SetOptions[f, hh -> kk]
Allan Hayes
hay at haystack.demon.co.uk