Mathematica 中的模块使变量名具有局部性,但有时需要名是全局的,值是局部的,这可以用
Mathematica 中的
Block 来实现.
如前一节
"模块和局部变量" 所述,在模块如
Module
中的变量
x 总是有一个唯一符号,模块每次调用这符号不同,且与全局符号
x 也有区别.
Block
中的
x 是一个全局的符号
x. 这个块的作用是让
x 有局部值. 进入这个块时,
x 的值在退出该块时恢复. 而在块执行时,
x 可以取任意值.
Mathematica 中的块设置了可以暂时改变值的一种环境. 在块执行过程中,用在块中所定义的变量的当前值计算表达式,不论表达式是该块的一部分或是在计算中某一处产生的情况都是如此.
在
Mathematica 中定义函数时,用不直接给出变量,但能影响函数的全局变量是方便的. 例如,
Mathematica 有一个全局变量
$RecursionLimit,它影响所有函数的计算但又不直接是函数的变量.
Mathematica 通常将所定义的全局变量的值保持到明显的改变了它为止,但也需要仅在一个计算过程中或某一项的计算中有效的值,这可以通过把它设置为
Mathematica 块的局部值来实现.
全局变量不仅可以用来设置函数的参数,还可以积累从函数得到的结果. 在块中设置这样的局部变量,可以积累在这个块执行过程中从所调用函数得到的结果.