ArgumentsOptions[f[args],n]
f の args を n 個の位置引数のリストとそれに続く有効なオプションのリストに分離しようとする.
ArgumentsOptions[f[args],{min,max}]
位置引数の数が min から max までであるように求める.
ArgumentsOptions[f[args],spec,assoc]
連想 assoc の情報に基づいて動作を変更する.
ArgumentsOptions
ArgumentsOptions[f[args],n]
f の args を n 個の位置引数のリストとそれに続く有効なオプションのリストに分離しようとする.
ArgumentsOptions[f[args],{min,max}]
位置引数の数が min から max までであるように求める.
ArgumentsOptions[f[args],spec,assoc]
連想 assoc の情報に基づいて動作を変更する.
詳細
- ArgumentsOptionsは,f[…]の位置引数の数が違っていたり未知のオプションや無効なオプションが指定されたりする場合は f についての適切なメッセージを出してFailureオブジェクトを返す.
- 連想 assoc には次のキーが使える.
-
"ExtraOptions" {} f の既知のオプションとして扱われる追加的なオプション "OptionsMode" "Longest" 任意の位置引数 args をどのように解釈するか "Head" List 位置引数とオプションリストのラッパー - "ExtraOptions"に与えられる追加的なオプションは,規則 nameval として,あるいはOptions[func]と等価なシンボル func として指定できる.
- ArgumentsOptionsは,f について指定されたすべてのオプションに有効な名前があるかどうかをチェックする.
- "OptionsMode"には,次の値を使うことができる. »
-
"Longest" OptionsPattern[]にマッチする args の末尾の要素を f のオプションとして扱う "Shortest" 既知の1つあるいは複数のオプション以外のものはすべて位置引数として扱う None すべての要素を位置引数として扱う - たとえ"OptionsMode""Shortest"のときでも,位置 max を超えた未知のオプションはメッセージを生成する. »
- ArgumentsOptionsは属性HoldFirstを有する.
例題
すべて開く すべて閉じる例 (1)
スコープ (7)
1個から3個の位置引数を取る関数の位置引数とオプションを分離する:
Options[f] = {a -> 1}ArgumentsOptions[f[1, 2, a -> 3], {1, 3}]ArgumentsOptions[f[1, 2, 3], {2, ∞}]ArgumentsOptions[f[1], {2, ∞}]Options[f] = {a -> 1, b -> 2}ArgumentsOptions[f[1, 2, 3, a -> 0, b -> 0], 3]Options[f]には現れない「隠れた」オプションが使える:
ArgumentsOptions[f[1, a -> 0], 1, <|"ExtraOptions" -> {a -> 1}|>]Options[f]「hidden」という名前のオプションとGraphics の任意のオプションが設定できる:
Options[f] = {normal -> Automatic}ArgumentsOptions[f[1, normal -> 3, hidden -> 2, AspectRatio -> 1], {1, 2}, <|"ExtraOptions" -> {hidden -> 0, Graphics}|>]位置 min+1から max までの未知の末尾のオプションを,f のオプションとしてではなく位置引数として扱う:
Options[f] = {a -> 1}ArgumentsOptions[f[1, b -> 2, a -> 3], {1, 2}, <|"OptionsMode" -> "Shortest"|>]デフォルトの"OptionsMode""Longest"では,未知のオプションに対してメッセージが出される:
ArgumentsOptions[f[1, b -> 2, a -> 3], {1, 2}, <|"OptionsMode" -> "Longest"|>]"OptionsMode""Shortest"のとき,既知のオプションは常に f のオプションとして扱われる:
ArgumentsOptions[f[1, a -> 2], {1, 2}, <|"OptionsMode" -> "Shortest"|>]すべての要素を f のオプションではなく位置引数として扱う:
ArgumentsOptions[f[1, a -> 2], {1, 2}, <|"OptionsMode" -> None|>]ArgumentsOptions[f[2 + 2, 3 * 3, a -> 4 ^ 4], 2, <|"Head" -> Hold, "ExtraOptions" -> {a -> 0}|>]アプリケーション (2)
1つまたは2つの位置引数で呼ばれた場合にヘルパー関数を呼び出す関数を定義する:
Options[f] = {a -> 1}f[args___] := Block[{sep},
sep = ArgumentsOptions[f[args], {1, 2}];
g[sep] /; !FailureQ[sep]
]g[{argList_, optList_}] := Switch[Length[argList],
1, First[argList] + OptionValue[f, optList, a],
2, argList + OptionValue[f, optList, a]
]1つまたは2つの位置引数で呼ばれると,ヘルパー関数が呼び出される:
f[3, a -> 4]f[3, 4, a -> 5]3つ以上の位置引数で呼ばれると,fは未評価で返され,メッセージが出される:
f[1, 2, 3]"OptionsMode""Shortest"を使って末尾の空リストを位置引数として扱うようにする:
Options[f] = {a -> b}ArgumentsOptions[f[a, {}, {}, {}], {1, 3}, <|"OptionsMode" -> "Shortest"|>]特性と関係 (10)
ArgumentsOptions[f[…],…]はメッセージを出し, f の不正な入力に対してはFailure を返す:
Options[f] = {a -> 1}ArgumentsOptions[f[1, 2], 3]ArgumentsOptions[f[0, b -> 2], 1]f がオプションを取らない場合は,すべての引数が位置引数であると仮定される:
Options[f]ArgumentsOptions[f[0, b -> 2], {1, 2}]オプションは,入力式の中でどのように現れるかとは無関係に,常に平らなリストとして返される:
Options[f] = {a -> 1, b -> 2, c -> 3}ArgumentsOptions[f[x, a -> 0, {b -> 5, {{c -> 17}}}], 1]ArgumentsOptions[…,{min,max}]は,常に最初の min 個の引数を位置引数として扱う:
Options[f] = {a -> 1}a0は,以下では OptionsPattern[]と一致するにもかかわらず,位置引数として扱われている:
ArgumentsOptions[f[1, a -> 0], {2, 3}]規則 a0は,位置引数の後ろで与えられた場合はオプションとして扱われる:
ArgumentsOptions[f[1, 2, a -> 0], {2, 3}]Options[f] = {a -> 1, b -> 2, c -> 3}ArgumentsOptions[f[x, a -> 5, y, b -> 7, c -> 11], {1, 4}]OptionsPattern[]と一致する末尾の規則は,f の既知のオプションである場合はオプションとして扱われる:
Options[f] = {a -> 1, b -> 2}たとえ"OptionsMode""Shortest"が与えられていても上記は真である:
ArgumentsOptions[f[1, a -> 0, b -> 0], {1, 2}, <|"OptionsMode" -> "Shortest"|>]既知と未知両方のオプションを含むオプション指定をするとメッセージが出る:
Options[f] = {a -> 1}ArgumentsOptions[f[1, {a -> 2, b -> 3}], 1]"OptionsMode""Shortest"では,既知と未知のオプションを含むリストが,可能な場合は位置引数として扱われる:
Options[f] = {a -> 1}ArgumentsOptions[f[1, {a -> 2, b -> 3}], {1, 2}, <|"OptionsMode" -> "Shortest"|>]位置引数の上限を超える未知のオプションでも,常にメッセージが生成される:
ArgumentsOptions[f[1, 2, {a -> 2, b -> 3}], {1, 2}, <|"OptionsMode" -> "Shortest"|>]OptionsPattern[]と一致する規則だけが有効なオプション指定である:
Options[f] = {a -> 1}規則12はOptionsPattern[]とは一致しない:
MatchQ[1 -> 2, OptionsPattern[]]ArgumentsOptions[f[1 -> 2], {0, 1}]12は,位置引数の後で与えられた場合は無効なオプション指定として扱われる:
ArgumentsOptions[f[0, 1 -> 2], {0, 1}]CheckArgumentsがFalseを返す場合は,ArgumentsOptionsはFailure[…]返す:
ArgumentsOptions[f[], 1]CheckArguments[f[], 1]考えられる問題 (3)
f がオプションを取る場合は,{}がOptionsPattern[]と一致するので末尾の空リストはデフォルトで無視される:
Options[f] = {a -> 1}ArgumentsOptions[f[1, 2, {}], {2, 3}]"OptionsMode""Shortest"を使って末尾の空リストが位置引数として扱われるようにする:
ArgumentsOptions[f[1, 2, {}], {2, 3}, <|"OptionsMode" -> "Shortest"|>]最小引数の位置あるいはその前にある引数はすべて,位置引数であるとみなされる:
ArgumentsOptions[StringCases["str", IgnoreCase -> True, Overlaps -> True], {2, 3}]ArgumentsOptionsは,オプション値が正しいかどうかのチェックはしない:
ArgumentsOptions[Map[f, x, Heads -> ∞], {2, 3}]Map[f, x, Heads -> ∞]テクニカルノート
関連するガイド
-
▪
- オプション管理 ▪
- パッケージの開発 ▪
- パッケージの保護 ▪
- ロバスト性とエラー処理
関連するワークフロー
- オプション付きの関数を定義する
テキスト
Wolfram Research (2020), ArgumentsOptions, Wolfram言語関数, https://reference.wolfram.com/language/ref/ArgumentsOptions.html (2024年に更新).
CMS
Wolfram Language. 2020. "ArgumentsOptions." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/ArgumentsOptions.html.
APA
Wolfram Language. (2020). ArgumentsOptions. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ArgumentsOptions.html
BibTeX
@misc{reference.wolfram_2026_argumentsoptions, author="Wolfram Research", title="{ArgumentsOptions}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/ArgumentsOptions.html}", note=[Accessed: 14-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_argumentsoptions, organization={Wolfram Research}, title={ArgumentsOptions}, year={2024}, url={https://reference.wolfram.com/language/ref/ArgumentsOptions.html}, note=[Accessed: 14-September-2026]}