Options[myPlot] = Options[Plot];
myPlot[args___] := ...

When defining a "wrapper" function like the above, I'd like it to inherit the System` function's options. Should I use Options[myPlot] = Options[Plot] or Options[myPlot] := Options[Plot]?


I use the first style you gave:


The function is then defined as


I don't see any reason to use SetDelayed (:=) in this context. EDIT As Brett Champion mentions in the comments, the default options for


will change if you use SetOptions on Plot. Hence, if you want your custom plot to always have the same options as Plot, use :=. I would prefer to specifically change the options for my Plot separately, so I would still use simply Set (=).

You might also want to check out this instructive question on Options in custom functions: Functions with Options

  • 6
    $\begingroup$ The default options of Plot will change if you use SetOptions. Using SetDelayed will pick up that change, unless SetOptions has also been applied to myPlot. $\endgroup$ Apr 22 '12 at 2:57
  • $\begingroup$ +1 Thanks @BrettChampion, I didn't even think of that. I updated the answer to reflect that possibility. $\endgroup$
    – tkott
    Apr 22 '12 at 13:38
  • 2
    $\begingroup$ I'd also like to point out that FilterRules can be used to strip out any additional options that are not present in the wrapped function. $\endgroup$
    – rcollyer
    Apr 23 '12 at 3:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.