MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Checking the form of an option

  • To: mathgroup at smc.vnet.net
  • Subject: [mg21187] Re: Checking the form of an option
  • From: Bojan Bistrovic <bojanb at physics.odu.edu>
  • Date: Fri, 17 Dec 1999 01:23:47 -0500 (EST)
  • Organization: Old Dominion Universityaruba
  • References: <831k39$dju@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

DIAMOND Mark 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?

It depends on the number of arguments and a few other things. In
general, let's call the function "f". If you have lets say exactly one
argument to the function, then you'd use something like

f[aa_, ooo___Rule]:= function1 /; IntegerQ[(K /. {ooo} /. Options[f])]

f[aa_, ooo___Rule]:= function2 /; (Head[#]===List &&
IntegerQ[#[[1]]])&[K /. {ooo} /. Options[f]]

f[aa_, ooo___Rule]:= function3 

As long as you have a (small) finite number of argumets, you just
replace aa_ with a list of your arguments. If you have a function with 
a variable number of arguments, you'd have to use somethin like (as long
as you have at least one argument before the options)

f[aaa__ /; Not[MemberQ[{aaa},_Rule]], ooo___Rule]:= ...

If you DON'T have any arguments before the options you'd have to
substitute aaa__ with aaa___ . You could use always "aaa" with three
blanks, but it will increase the risc of infinite loops and it will slow
down your code (believe me, I've tried). I hope this helps.


-- 
-------------------------------------------------------------
Bojan Bistrovic,                       bojanb at physics.odu.edu  
Old Dominion University, Physics Department,      Norfolk, VA
-------------------------------------------------------------


  • Prev by Date: Re: Partial evaluation
  • Next by Date: Re: beautiful 3D graphics with Mathematica 4
  • Previous by thread: Re: Checking the form of an option
  • Next by thread: RE: Re: Checking the form of an option