ArgumentsOptions[f[args],n]
尝试将 args 分成 n 个位置参数的列表,随后是 f 的有效选项的列表.
ArgumentsOptions[f[args],{min,max}]
要求位置参数的个数在 min 和 max 之间.
ArgumentsOptions[f[args],spec,assoc]
根据关联 assoc 中的信息修改行为.
ArgumentsOptions
ArgumentsOptions[f[args],n]
尝试将 args 分成 n 个位置参数的列表,随后是 f 的有效选项的列表.
ArgumentsOptions[f[args],{min,max}]
要求位置参数的个数在 min 和 max 之间.
ArgumentsOptions[f[args],spec,assoc]
根据关联 assoc 中的信息修改行为.
更多信息
- 如果 f[…] 的位置参数个数错误、选项未知或选项规范无效,则 ArgumentsOptions 为 f 发出适当的消息并返回 Failure 对象.
- 以下键可用于关联 assoc:
-
"ExtraOptions" {} 被视为 f 已知选项的其他选项 "OptionsMode" "Longest" 如何解释 args 的可选位置参数 "Head" List 位置参数和选项列表的封装 - 指定给 "ExtraOptions" 的其他选项可以指定为规则 nameval 或符号 func,其等效于 Options[func].
- ArgumentsOptions 检查为 f 指定的选项是否全部具有有效名称.
- 可以使用以下 "OptionsMode" 的值: »
-
"Longest" 将与 OptionsPattern[] 匹配的 args 的所有尾随元素视为 f 的选项 "Shortest" 将一个或多个已知选项以外的任何内容视为位置参数 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"|>]已知选项仍被视为 f 的选项,且具有 "OptionsMode""Shortest":
ArgumentsOptions[f[1, a -> 2], {1, 2}, <|"OptionsMode" -> "Shortest"|>]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)
定义一个函数,如果使用一个或两个位置参数调用该函数,则调用一个辅助函数:
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]
]f[3, a -> 4]f[3, 4, a -> 5]当使用两个以上位置参数调用时,f 以未运算的形式返回,并发出一条消息:
f[1, 2, 3]使用 "OptionsMode""Shortest" 将尾随的空列表视为位置参数:
Options[f] = {a -> b}ArgumentsOptions[f[a, {}, {}, {}], {1, 3}, <|"OptionsMode" -> "Shortest"|>]属性和关系 (10)
对于 f 的无效输入,ArgumentsOptions[f[…],…] 发出一条消息,并返回 Failure[…]:
Options[f] = {a -> 1}ArgumentsOptions[f[1, 2], 3]ArgumentsOptions[f[0, b -> 2], 1]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}]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}]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 语言. 2020. "ArgumentsOptions." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/ArgumentsOptions.html.
APA
Wolfram 语言. (2020). ArgumentsOptions. Wolfram 语言与系统参考资料中心. 追溯自 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: 17-August-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: 17-August-2026]}