RE: Checking the form of an option
- To: mathgroup at smc.vnet.net
- Subject: [mg20997] RE: [mg20982] Checking the form of an option
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Thu, 2 Dec 1999 21:41:11 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Mark Diamond wrote:
----------------------------
I want to check whether option "K" to a function is an integer, a list of
single numbers, or neither of these, and then to execute one of three
different statements.
If these K were a simple parameter, I could do it with
f[k_Integer] := functionBody;
f[k:{_Integer}..] := functionBody;
f[k_] := functionBody
but I cannot see how to check for similar conditions on an *option* inside
one function. Can anyone help?
---------------------------------
There are many ways to approach this.
I write a toy example that does what you want.
Notice the last pattern in Switch is (_) which matches anything. You only
get the that pattern if the other two fail.
In[1]:=
Options[f] = {K -> 2};
f[x_, opts___] :=
With[
{k1 = K /. Flatten[{opts, Options[f]}]},
Switch[k1,
_Integer, {k1, "K is an Integer."},
{__Integer}, {k1, "K is a list of Integers."},
_, {k1, "K is neither an Integer or list of Integers."}
]
]
----------------------
Now I work some examples. The first one uses the default setting K->2
In[3]:=
f[x]
Out[3]=
{2, "K is an Integer."}
In[4]:=
f[x, k -> 5]
Out[4]=
{2, "K is an Integer."}
In[5]:=
f[x, K -> {2, 3}]
Out[5]=
{{2, 3}, "K is a list of Integers."}
In[6]:=
f[x, K -> 2.3]
Out[6]=
{2.3, "K is neither an Integer or list of Integers."}
--------------------
Regards,
Ted Ersek
For Mathematica tips, tricks see
http://www.dot.net.au/~elisha/ersek/Tricks.html