Re: Help with Check Function Arguments & Options
- To: mathgroup at smc.vnet.net
- Subject: [mg87289] Re: Help with Check Function Arguments & Options
- From: "David Park" <djmpark at comcast.net>
- Date: Sun, 6 Apr 2008 06:46:03 -0400 (EDT)
- References: <ft7gkq$bve$1@smc.vnet.net>
Andrew,
Assuming you are using Mathematica Version 6, you could write your function
something like the following:
f::usage =
"f[x,y,option] will peform an operation on x and y depending on the
option.";
fOperation::usage =
"fOperation \[Rule] Plus is an option for f that gives the operation for
combining the two arguments.";
Options[f] = {fOperation -> Plus};
SyntaxInformation[
f] = {"ArgumentsPattern" -> {_, _, OptionsPattern[]}};
f[x_, y_, OptionsPattern[]] :=
Module[{op},
op = OptionValue[fOperation];
op[x, y]
]
Then if the user types f[a] the input appears with a little red caret that
indicates more arguments are needed. If evaluated with the wrong number of
arguments it just returns unevaluated. If the user uses an incorrect option
such as f[a,b,PlotRange->5] then PlotRange will show in red, evaluate with
the default option value, and give a warning message.
f[a, b]
a + b
f[a, b, fOperation -> Times]
a b
f[a, b, fOperation -> (#1^2 + #2 &)]
a^2 + b
--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/
"Andrew Beveridge" <acbev at lanl.gov> wrote in message
news:ft7gkq$bve$1 at smc.vnet.net...
>I would like to thank everyone who has previously responded to my
> posts. Your advice has helped greatly.
>
> I have a couple of final questions.
>
> I am writing a package file and would like to do some argument and
> option checking if possible; that is check the number of arguments
> and see if there are unknown options.
>
> If my function has no options I think I can do this.
>
> f[x_,y_] := x + y
> f[args___] := If[Length[{args}] != 2, Message[f::"argrx", f,
> Length[{args}], 2]; Return[$Failed]]
>
> This type of check has been posted to the message board before.
>
> My question is assume that f[x,y] has multiple options, that is
> Options[f] = {opt1 -> 1, opt2 -> True}, etc
>
> How do I check if the user entered the correct options?
>
> Thanks again for all of your help.
>
> Regards,
> Andrew
>
> Andrew C Beveridge
> MS M888
> Los Alamos National Laboratory
> Los Alamos, NM 87545
>
> 505-665-2092
> e-mail: acbev at lanl.gov
>
>