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. • 使用imin和imax确定将赋给迭代变量 i的值序列. • 依次把迭代变量赋给每一个值,同时对f计算. • 清除赋给i的局部值. 如果迭代变量不止一个,则对每一个变量和所有过程变量的每一个值依次进行同样的过程. 除非另外指明,只有当一个具体的值分配给i后 f 才被计算.你也可以使用Evaluate[f]让f 立刻被计算,而不是只在 i 被赋给一个具体的值以后才计算. 赋值赋值的左边只被部分计算. • 若左边是一个符号,则不进行计算. • 若左边是一个没有任何属性的函数,函数的参数被计算,而函数本身不被计算. 其右边在直接赋值情形下(=)被计算;而延迟赋值情形下(:=)不被计算. 出现在赋值左边的任何形式为HoldPattern[expr]的子表达式不被计算,而是在赋值进行之前用expr的非计算形式替换.
|