Options, OptionQ

OptionQ details

OptionQ isn't documented in The Mathematica Book or the Help Browser, but it's helpful when defining a function with  options.  OptionQ does however have the usage message shown below.

In the cells below we see OptionQ is True when it's given a Rule, a
RuleDelayed or a list of these things. You get an error message if you give
OptionQ more than one argument.

OptionQ also returns True when it's given nested lists of options.

As indicated in the usage message OptionQ returns False when it's given a
single argument with any other form.  This is seen in the next cell.

Typical use of OptionQ

The next cell defines a function that takes options.  This function takes  one required argument and optional arguments are allowed as long as they all  pass OptionQ.  The form (opts___?OptionQ) is perhaps the most frequent use of  BlankNullSequence ( ___  ie. "Tripple Blank").  Notice this allows for a single option, a  sequence of options, or no options.

Each usage of foo in the next cell matches the definition of foo above.

The definition of foo doesn't apply to the next example because 6  isn't an
option.

Getting the setting of Options

Section  2.3.10 of The Mathematica Book suggests using the form
name/.{opts}/.Options[f]
to get the setting of an option.  This technique is used below to get  the PlotStyle and Axes settings for a function.

In the next cell PlotFunction performs as expected when given no options, one
option, or two options.

In the next cell Plot alows us to provide a list of options rather than a
sequence of options.  For consistency we would like our PlotFunction to allow
us to give a list of options as well.

Unfortunately our PlotFunction defined above has a problem when a list of
option is given in the next cell.

The way to avoid the problem in the last exaple is to use a different  method for getting the option settings.  Instead the following form should  normally be used to get option settings.
{var1,var2,var3}={opt1,opt2,opt3}/.Flatten[{opts,Options[f]}]
This more robust method is used in the next cell.

The next cell demonstrates that the new version of PlotFunction can take any
way of expressing options that passes the OptionQ test.

Created by Mathematica  (May 16, 2004)