ConfirmMatch[expr,form]
确认 expr 匹配样式 form,否则会向其周边离得最近的 Enclose 抛出异常.
ConfirmMatch[expr,form,info]
若 expr 未被确认,则对 info 进行计算,并将结果包含在抛出的异常中.
ConfirmMatch[expr,form,info,tag]
对任何抛出的异常使用指定标签.
ConfirmMatch
ConfirmMatch[expr,form]
确认 expr 匹配样式 form,否则会向其周边离得最近的 Enclose 抛出异常.
ConfirmMatch[expr,form,info]
若 expr 未被确认,则对 info 进行计算,并将结果包含在抛出的异常中.
ConfirmMatch[expr,form,info,tag]
对任何抛出的异常使用指定标签.
更多信息
- 如果 expr 成功被确认,则 ConfirmMatch[expr,…] 返回 expr.
- 在给定了一个标签后,ConfirmMatch 即被动态私有化. 否则即被语义上私有化. »
- info 的默认值是 Null.
- ConfirmMatch 生成的 Failure 包括以下类别:
-
"Information" ConfirmMatch[expr,form,info,…] 中的 info "Expression" ConfirmMatch[expr,…] 中的 expr "Pattern" ConfirmMatch[expr,form,…] 中的 form - 这些类别中的值可使用 failure["prop"] 或直接通过 Enclose[expr,"prop"] 进行抓取.
范例
打开所有单元 关闭所有单元基本范例 (2)
若 expr 匹配 form,则 ConfirmMatch[expr,form] 给出 expr:
Enclose[f[1, ConfirmMatch[2, _Integer], 3]]由于 "foo" 不匹配 _Integer,ConfirmMatch 停止计算,并向其周围的 Enclose 抛出一个异常:
Enclose[f[1, ConfirmMatch["foo", _Integer], 3]]world[x_] := Enclose[ConfirmMatch[x, _String] <> ", World!"]world["Hello"]world[4]范围 (3)
当 ConfirmMatch 抛出异常时,它会停止计算并回到匹配的 Enclose:
Enclose[Echo[1];ConfirmMatch[{1, 2, 3}, _String];Echo[2]]Enclose[ConfirmMatch[{1, 2, 3}, _List, Echo["info was evaluated"]]]Enclose[ConfirmMatch["not a list", _List, Echo["info was evaluated"]]]创建一个可调用有一个标签的 ConfirmMatch 这样它可以被动态抓取:
f[x_] := g[StringReverse[ConfirmMatch[x, _String, Null, "fooTag"]]]h[y_] := Enclose[f[y], Identity, "fooTag"]h["reverseme"]h[42]如果没有给定标签,ConfirmMatch 在语义上私有化:
f2[x_] := g[StringReverse[ConfirmMatch[x, _String]]]h2[y_] := Enclose[f2[y]]h2[2]
应用 (1)
reverseRoman::nan = "`` is not an integer.";reverseRoman[n_] :=
Enclose[
StringReverse[RomanNumeral[
ConfirmMatch[n, _Integer, Message[reverseRoman::nan, n]]
]],
$Failed&]reverseRoman[21]reverseRoman["veni, vidi, vici"]属性和关系 (1)
ConfirmMatch 可通过 ConfirmBy 和 MatchQ 进行模拟:
Enclose[f[ConfirmMatch[{1, 2, 3}, {_Integer, 2, _String}]]]Enclose[f[ConfirmBy[{1, 2, 3}, MatchQ[{_Integer, 2, _String}]]]]可能存在的问题 (3)
ConfirmMatch 必须给定一个标签或在语义 Enclose 中:
ConfirmMatch[5, _Integer]通过用带标签的变量替换符号 ConfirmMatch 的实例可让未带标签的 ConfirmMatch 工作:
Enclose[Hold[ConfirmMatch]]带标签的 ConfirmMatch 需要一个有匹配标签的 Enclose:
Enclose[ConfirmMatch["hello", _Integer, Null, "foo"], Identity, "bar"]
文本
Wolfram Research (2020),ConfirmMatch,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ConfirmMatch.html.
CMS
Wolfram 语言. 2020. "ConfirmMatch." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/ConfirmMatch.html.
APA
Wolfram 语言. (2020). ConfirmMatch. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ConfirmMatch.html 年
BibTeX
@misc{reference.wolfram_2026_confirmmatch, author="Wolfram Research", title="{ConfirmMatch}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/ConfirmMatch.html}", note=[Accessed: 08-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_confirmmatch, organization={Wolfram Research}, title={ConfirmMatch}, year={2020}, url={https://reference.wolfram.com/language/ref/ConfirmMatch.html}, note=[Accessed: 08-September-2026]}