Re: Mixing optional parameters and options
- To: mathgroup at smc.vnet.net
- Subject: [mg116171] Re: Mixing optional parameters and options
- From: Oliver Ruebenkoenig <ruebenko at wolfram.com>
- Date: Fri, 4 Feb 2011 01:38:02 -0500 (EST)
Peter,
On Thu, 3 Feb 2011, Peter Breitfeld wrote:
>
> To give a simpe example which, I hope, makes clear my issue:
> Suppose I define this (silly) example function:
>
>
> Options[f]={bla->True};
> f[x_,y_:11,OptionsPattern[]:=If[OptionValue[bla],x*y,y/x]
>
> Now:
> f[5] ----> 55 (ok)
> f[5,7] ----> 35 (ok)
>
> f[5,7,bla->False] ----> 7/5 (ok)
> f[5,bla->False] ----> 5*(bla->False)
>
> I expected the result 11/5
>
> The only way I found was to define f like this:
>
> f[{x_,y_:11},OptionsPattern[]]
>
> Can it be done without the curly braces?
>
> Thank you
>
you could use this
Options[f] = {bla -> True};
f[x_, y_: 11, OptionsPattern[]] /; NumericQ[y] :=
If[OptionValue[bla], x*y, y/x]
hth,
Oliver