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

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
\

• Prev by Date: NDSolve algorithm
• Next by Date: 1/f article reference
• Previous by thread: Re: NDSolve algorithm
• Next by thread: Options in self-defined functions