PatternTest

p?test

是一个模式对象,代表匹配 p 的任何表达式,并且表达式应用 test 给出 True.

更多信息

  • test[pval] 的任何非 True 结果表示失败.
  • 运算符 ? 有一个高的优先级. 这样 _^_?t_^(_?t),而不是 (_^_)?t.
  • 在类似 __?test 的形式中,当应用 test 时,由 __ 匹配的序列的每个元素产生 True.
  • PatternTest 具有属性 HoldRest.

范例

打开所有单元关闭所有单元

基本范例  (3)

求出表达式中满足 NumberQ 测试的例子:

检验列表是否只含有正元素:

创建只应用于数值参数的定义:

范围  (6)

用零替换负数:

求列表中可被7整除的元素:

可同时被5和7整除的元素:

可被5或者7整除的元素:

创建一个只计算给定一个非负数和一个素数的函数:

创建一个只计算一个负素数的函数:

在复数模式上使用 PatternTest

搜索不允许表达式计算的数字:

只使用 NumberQ 使每个元素进行计算:

属性和关系  (2)

PatternTest 对模式应用检验函数,不需要名称:

Condition 在模式的已命名部分计算布尔表达式:

使用 Except 来有效地对 PatternTest 取负:

可能存在的问题  (1)

PatternTest 计算 held 表达式的一部分的可能匹配:

由于正常的计算规则,表达式可能在被检验函数检查之前计算:

使用 Function 的三参数个数或者使用 Condition 编写模式来避免这个现象:

Wolfram Research (1988),PatternTest,Wolfram 语言函数,https://reference.wolfram.com/language/ref/PatternTest.html.

文本

Wolfram Research (1988),PatternTest,Wolfram 语言函数,https://reference.wolfram.com/language/ref/PatternTest.html.

CMS

Wolfram 语言. 1988. "PatternTest." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/PatternTest.html.

APA

Wolfram 语言. (1988). PatternTest. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/PatternTest.html 年

BibTeX

@misc{reference.wolfram_2024_patterntest, author="Wolfram Research", title="{PatternTest}", year="1988", howpublished="\url{https://reference.wolfram.com/language/ref/PatternTest.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_patterntest, organization={Wolfram Research}, title={PatternTest}, year={1988}, url={https://reference.wolfram.com/language/ref/PatternTest.html}, note=[Accessed: 22-November-2024 ]}