Re: Options in self-defined functions
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1600] Re: Options in self-defined functions
- From: Scott.A.Hill at williams.edu (Lancelot)
- Date: Tue, 4 Jul 1995 01:38:27 -0400
- Organization: Williams College, Williamstown MA
I've received several replies already concerning my previous
question; thank you. For anyone who is curious, here's a summary
(which is explained moderately well by the Mathematica text):
Say we want to have a function f with a parameter x and options y and
z.
Options[f]={y->1,z->2} (*The 1 and the 2 are the default values*)
f[x_,opts___]:=(x+y+z)/.{opts}/.Options[f]
Then f[1] will return 4, f[2,y->3] will equal 7, f[3,y->0,z->0] will
equal 3, and so forth.
One thing I did notice: what I tried to do initially was to
take a function with 10 parameters and assign it to another function
with only two parameters and a lot of options. In this case, I needed
to Hold[] the original function, apply the /.'s to it, and then use
ReleaseHold. i.e.
If F[x,y,z] was my original function,
f[x_,opts___]:=ReleaseHold[ Hold[F[x,y,z]]/.{opts}/.Options[f] ]
I suppose if F returned a simple symbolic formula-- i.e. x+y+z or some
sort-- this wouldn't be necessary. However in my case F was a
gradient search, so the Hold was necessary.
Thanks again to everyone who answered my letter.
/
:@-) Scott
\