dee*_*gee 5 wolfram-mathematica
这对于专家来说应该很快,但我在使用选项定义函数方面相对较新.这是我尝试过的示意图,我将在显示代码后解释:
MyPlotFunction[params_, optionalparameter_List:{1,2,3}, opts:OptionsPattern[]]:=
Plot [ stuff, {x,0,1}, Evaluate@FilterRules[{opts},Options@Plot]];
Options[MyPlotFunction] = { PlotRange->{-5,5}, Frame->True, ... other plot options};
Run Code Online (Sandbox Code Playgroud)
有四个微妙的细微之处:
但我上面所做的不起作用.我设置的默认选项被忽略,但它们出现在??MyPlotFunction我的函数的信息中.如果你们还没有发现错误,我会举例说明.
编辑:不起作用的示例:
SimplePlot[t_,opts:OptionsPattern[{PlotRange->{-4,4},Frame->True}]]:=
Plot[2x+t,{x,0,1},opts];
失败,默认选项被忽略.
SimplePlot[t_,opts:OptionPattern[]]:=
Plot[2x+t],{x,0,1},opts];
Options[SimplePlot] = {PlotRange->{-4,4},Frame->True};
失败,默认选项被忽略.
SimplePlot[t_,opts__:{PlotRange->{-4,4},Frame->True}]:=
Plot[2x+t,{x,0,1},opts];
默认选项适用于裸调用,但如果覆盖其中一个选项或任何其他绘图选项,则其余默认值将丢失.
OptionsPattern[] 只捕获传入的选项,因此您需要显式包含任何非默认选项设置,例如使用以下内容:
FilterRules[{opts, Options[MyPlotFunction]}, Options@Plot]
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子:
Options[MyPlotFunction] = {PlotRange -> {-5, 5}, Frame -> True};
MyPlotFunction[params_, optionalparameter_List: {1, 2, 3},
opts : OptionsPattern[MyPlotFunction]] :=
Plot[optionalparameter, {x, 0, 1},
Evaluate@FilterRules[{opts, Options[MyPlotFunction]}, Options@Plot]]
Run Code Online (Sandbox Code Playgroud)
