条件

Wolfram 语言中有一系列设置条件的方法,这可以使表达式在一定的条件满足时才进行计算.

lhs:=rhs/;testtest 的值为 True 时用定义
If[test,then,else]test 的值为 True 时计算 then,值为 False 时计算 else
Which[test1,value1,test2,]逐个计算 ,给出第一个 True 的 value
Switch[expr,form1,value1,form2,]expr 与每个 比较,给出第一个匹配的 value
Switch[expr,form1,value1,form2,,_,def]def 作为默认值
Piecewise[{{value1,test1},},def]给出第一个 True 的 value

条件的结构.

test 的值为 False,故 else 表达式的返回值为 .
In[1]:=
Click for copyable input
Out[1]=
此处仅计算 else 表达式的值.

在使用 Wolfram 语言编程时,可以用 If 函数控制的多个分支来给出一个定义,也可以用 条件控制来给出几个定义. 通常用多个定义可以使程序清楚和容易修改.

定义阶梯函数: 时值为 ,其余值为 .
In[3]:=
Click for copyable input
定义阶梯函数正的那一部分.
In[4]:=
Click for copyable input
这里定义阶梯函数负的那一部分.
In[5]:=
Click for copyable input
这里显示了用 给出的全部定义.

If 函数提供了两种情况下选择方法. 用多个选择时,就可以使用 If 函数的嵌套形式. 但通常用 WhichSwitch 更好一些.

这里定义了一个分三段的函数. 用 True 作第三个测试以使用默认值0.
In[7]:=
Click for copyable input
用了 Which 的第一种情况.
In[8]:=
Click for copyable input
Out[8]=
这里用了第三种情况.
In[9]:=
Click for copyable input
Out[9]=
定义一个依赖于自变量在模 下的值.
In[10]:=
Click for copyable input
Mod[7,3] 等于 ,故用了 Switch 的第二种情况.
In[11]:=
Click for copyable input
Out[11]=
不匹配,但与 匹配.
In[12]:=
Click for copyable input
Out[12]=

Wolfram 语言等符号系统中的条件可能产生既不是 True,也不是 False 的结果. 例如 不给出 TrueFalse 的结果,除非对 都指定了确定的值.

由于测试的结果既不是 True,也不是 False,故 If 没有被计算.
In[13]:=
Click for copyable input
Out[13]=
可以在 If 中添入第4个变量,当测试结果既非 True,也非 False 时使用它.
In[14]:=
Click for copyable input
Out[14]=
If[test,then,else,unknown]test 既不是 True 又不是 FalseIf 的一种形式
TrueQ[expr]exprTrue 时给出 True,否则给出 False
lhs===rhsorSameQ[lhs,rhs]lhsrhs 相等时给出 True,否则给出 False
lhs=!=rhsorUnsameQ[lhs,rhs]lhsrhs 不相等时给出 True,否则给出 False
MatchQ[expr,form]当模式 formexpr 匹配时给出 True,否则给出 False

处理符号条件的函数.

Wolfram 语言仍将它作为一个符号方程.
In[15]:=
Click for copyable input
Out[15]=
expr 的值不是 True 时,TrueQ[expr] 都认为 exprFalse.
In[16]:=
Click for copyable input
Out[16]=
测试两个表达式是否恒等,此处它们不恒等.
In[17]:=
Click for copyable input
Out[17]=

的区别是 的返回值是 TrueFalse,而 可以以符号等式的形式出现 (见 "方程" ). 测试两个表达式的结构时用 ,测试数学上相等时用 . 在模式匹配中,Wolfram 语言用 检查两个表达式是否匹配.

去测试表达式的结构.
In[18]:=
Click for copyable input
Out[18]=
给出了一个无用的结果.
In[19]:=
Click for copyable input
Out[19]=

在设置条件时,常常用到 等组合测试. 重要的一点是当这些测试中任一个测试的结果为 False,组合测试 的结果就是 False 时. Wolfram 语言逐次进行每个测试 ,当某一个测试 的结果为 False 时就停止.

expr1&&expr2&&expr3计算到某一个 False 为止
expr1||expr2||expr3计算到某一个 True 时停止

逻辑表达式的计算.

涉及两个测试的函数.
In[20]:=
Click for copyable input
两个测试都进行了计算.
In[21]:=
Click for copyable input
Out[21]=
第一个测试的结果是 False,故第二个不再进行. 第二个测试将包含 ,并且将产生错误.
In[22]:=
Click for copyable input
Out[22]=

Wolfram 语言处理逻辑表达式的方式允许进行组合测试,在组合测试中只有前面的条件满足时,后面的测试才起作用. 这种特性与C语言等类似,可以使我们很方便地编写各种 Wolfram 语言程序.