規則として与えられた一群のオプションを表すパターンオブジェクトである.オプションの値にはOptionValueでアクセスすることができる.
Options[f]からデフォルトのオプション値を取る.
OptionsPattern[{opt1val1,opt2val2,…}]
デフォルトのオプション値の明示的なリストを使う.
OptionsPattern
規則として与えられた一群のオプションを表すパターンオブジェクトである.オプションの値にはOptionValueでアクセスすることができる.
Options[f]からデフォルトのオプション値を取る.
OptionsPattern[{opt1val1,opt2val2,…}]
デフォルトのオプション値の明示的なリストを使う.
詳細
- OptionsPatternは,->あるいは:>で指定される,左辺が記号または文字列の,連続する規則あるいはそのネストしたリストの何にでもマッチする.
- OptionsPattern[{spec1,spec2,…}]において,speciは頭部 fiあるいは明示的な規則 opti->valiのどちらでもよい.それぞれの頭部はOptions[fi]から得られた規則のリストとして並列的に適用される.
- OptionsPattern[]は最も近くで取り囲んでいる関数のデフォルトオプションを使う.
- OptionsPattern[{}]はデフォルトオプションを含まない.
例題
すべて開く すべて閉じる例 (3)
Options[f] = {a -> a0, b -> b0};f[x_, OptionsPattern[]] := {x, OptionValue[a]}f[7, a -> uuu]f[7]明示的にOptions[f]を設定することはせずに,この割当てについてデフォルトのオプション値を定義する:
f[x_, OptionsPattern[{a -> a0, b -> b0}]] := {x, OptionValue[a]}f[7]Plotのデフォルトのオプション値を取る:
f[x_, OptionsPattern[Plot]] := {OptionValue[AspectRatio], OptionValue[ImageSize]}Plotのデフォルトを使う:
f[7]Plotのデフォルトの1つを無効にする:
f[7, ImageSize -> 20]スコープ (4)
ArcLengthのオプションを使い,Methodのデフォルト値を無効にする:
f[OptionsPattern[{Method -> "NIntegrate", ArcLength}]] := {OptionValue[Assumptions], OptionValue["Method"]}f[Assumptions -> c > 0, Method -> "Integrate"]f はAssumptionsについてはArcLengthと同じデフォルトを使うが,Methodについてはそうではない:
f[]OptionValue[ArcLength, {Assumptions, Method}]f[OptionsPattern[{Plot, Plot3D}]] := {OptionValue[PlotRange], OptionValue[BoxRatios]}f[PlotRange -> All]共通オプションについては,Plotからデフォルトが継承される:
f[]Options[Plot, PlotRange]Options[Plot3D, PlotRange]関数 g は,共通オプションについてはPlot3Dからデフォルトを継承する:
g[OptionsPattern[{Plot3D, Plot}]] := {OptionValue[PlotRange], OptionValue[BoxRatios]}g[]デフォルトオプションなしでOptionsPatternを使う:
f[x_, OptionsPattern[{}]] := OptionValue[a]f[1, a -> x, b -> y]オプション中に明示的に存在しない場合はオプション名が返される:
f[7, {b -> y}]OptionsPatternは,ReplaceAllのような正規のパターンマッチング関数で使うことができる:
f[7, {a -> x, b -> y}] /. f[_, OptionsPattern[{}]] :> OptionValue[a]アプリケーション (2)
Options[f] = {"Square" -> False}ヘルパー関数 fCore を使って f を実装してもなお,f からデフォルトが継承される:
f[args___] := fCore[f, args]
fCore[f, x_, OptionsPattern[f]] := If[OptionValue["Square"], x ^ 2, x, "BadOptionValue"]f[2]f[2, "Square" -> True]Options[f] = {a -> 1, b -> 2};
Options[g] = {b -> 3, c -> 4};両方のオプション集合を使う関数 h は g のデフォルトを優先する:
h[OptionsPattern[{g, f}]] := OptionValue[{a, b, c}]h[]h[a -> 10, b -> 7]特性と関係 (3)
OptionsPatternは任意の規則列または規則のリストとマッチする:
MatchQ[f[a -> 1, b :> 3], f[OptionsPattern[]]]MatchQ[f[{a -> 1, b :> 3}], f[OptionsPattern[]]]MatchQ[f[{a -> 1, {b :> 3, {c -> 7}}}], f[OptionsPattern[]]]空列はOptionsPatternとマッチする:
MatchQ[f[], f[OptionsPattern[]]]空リストはOptionsPatternとマッチする:
MatchQ[f[{}], f[OptionsPattern[]]]考えられる問題 (2)
OptionsPatternはオプションの任意の集合とマッチする:
Options[f] = {a -> 1};
f[opts : OptionsPattern[f]] := {opts, OptionValue[a]}f[a -> 1, b -> 2]FilterRulesを使うと f について有効なオプションのみを使うことができる:
f[opts : OptionsPattern[f]] := {opts, OptionValue[f, FilterRules[Options[f], {opts}], a]}f[a -> 1, b -> 2]ネストした任意の空リストはOptionsPatternにマッチする:
MatchQ[f[{}], f[OptionsPattern[]]]MatchQ[f[{{}}], f[OptionsPattern[]]]テクニカルノート
関連するガイド
-
▪
- オプション管理 ▪
- パッケージの開発 ▪
- パターン ▪
- ロバスト性とエラー処理
関連するワークフロー
- オプション付きの関数を定義する
テキスト
Wolfram Research (2007), OptionsPattern, Wolfram言語関数, https://reference.wolfram.com/language/ref/OptionsPattern.html.
CMS
Wolfram Language. 2007. "OptionsPattern." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/OptionsPattern.html.
APA
Wolfram Language. (2007). OptionsPattern. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/OptionsPattern.html
BibTeX
@misc{reference.wolfram_2026_optionspattern, author="Wolfram Research", title="{OptionsPattern}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/OptionsPattern.html}", note=[Accessed: 05-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_optionspattern, organization={Wolfram Research}, title={OptionsPattern}, year={2007}, url={https://reference.wolfram.com/language/ref/OptionsPattern.html}, note=[Accessed: 05-August-2026]}