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

2.6.2 局部常数

定义局部常数

在模块中可以定义能赋值多次的局部变量,但有时仅需要赋值一次的局部常数. Mathematica 中的 With 结构可以建立局部常数.

定义 t 的全局值

定义把 t 用作局部常数的函

数使用定义w

t 仍然具有它的全局值

与模块中的情况相似,用 With 定义的初始值在 With 执行之前进行计算.

给局部变量赋值的表达式 t+1t 的全局值进行计算

 , 可以将 With 理解为 /. 运算的推广,可适用于 Mathematica 的代码.

使用 x a

替代以后,With 的内容是 a=5, a 得到了全局值

清除 a 的值

在某种意义上,With 类似于局部变量仅赋值一次的 Module 的特殊形式. 用 With 而不用 Module 的主要原因之一是使 Mathematica 程序容易理解. 在模块中 的某一处遇到变量 x 时很可能需要跟踪整个模块的代码来得到 x 在该处的值,而在 With 结构中,只需要观察初始值列表就能得到局部常数的值.
有几个 With 结构时,总是某一个变量最里面的一个起作用. 可以将 ModuleWith 混用. 一般原则是某一变量最里面的 With 起作用.

在嵌套 With 结构中,总是最里的一个起作用

可以将 ModuleWith 结构混用

当名字不重合时,结构内的变量不屏蔽结构外的变量

除过 xbody 在何时计算外,With[ x =   , body]  做法基本类似.然而当表达式body 内部都包含 WithModule 结构时, With 显示特殊的性态. 主要的问题是防止不同 With 结构中的局部常数相互冲突, 或与全局目标冲突,有关细节将在 2.6.3 节讨论.

With 内部的 y 被重新命名以防止它与全局变量冲突