此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.2)

A.4.2 非标准的参数计算


Mathematica中有大量内嵌函数,这些函数以独特的方式对它们的参数计算.控制结构While就是一个例子.该符号 While具有HoldAll属性.因此,While的参数不按标准求值过程求值.实际上,While的内部代码以特殊的方式对参数计算.对于 While而言,该代码重复计算同一个值,以便实现循环.

以特殊方式对参数计算的内部函数

逻辑运算

在一个形如 && && 的表达式中, 按顺序计算.只要一发现某个 False,求值就被中止,并且False作为结果返回.这意味着你能够利用 来表示一个程序中的不同分支,以实现当且仅当特定条件满足时才对一特殊分支进行计算.
Or函数很像And;只要它一发现某个参数为True就返回True.而Xor却总是对它所有的参数计算.

迭代函数

一个迭代函数,例如 Do[f,  i, imin, imax ],按如下顺序计算:

• 对指定的迭代进行计算.如果它不是  i, imin, imax 的形式,该求值将停止.
• 使迭代变量i成为局部变量,从而有效地使用Block.
• 使用iminimax确定将赋给迭代变量 i的值序列.
• 依次把迭代变量赋给每一个值,同时对f计算.
• 清除赋给i的局部值.

如果迭代变量不止一个,则对每一个变量和所有过程变量的每一个值依次进行同样的过程.
除非另外指明,只有当一个具体的值分配给if 才被计算.你也可以使用Evaluate[f]f 立刻被计算,而不是只在 i 被赋给一个具体的值以后才计算.

赋值

赋值的左边只被部分计算.

• 若左边是一个符号,则不进行计算.

• 若左边是一个没有任何属性的函数,函数的参数被计算,而函数本身不被计算.
其右边在直接赋值情形下(=)被计算;而延迟赋值情形下(:=)不被计算.
出现在赋值左边的任何形式为HoldPattern[expr]的子表达式不被计算,而是在赋值进行之前用expr的非计算形式替换.