Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica > 核心语言 > 过程式编程 > 作用域结构 > Module >
Mathematica > 核心语言 > 程序包开发 > 命名空间的管理 > 作用域结构 > Module >

Module

Module
指定 expr 中符号 xy、... 出现的位置应被当作局部值.
Module
用来定义 x, ... 的初始值.
  • Module允许用户创建局部变量,该局部变量的名称相对于模块是局部的.
  • 在每次被调用时,Module 创建新的符号来表示它的每个局部变量.
  • Module 创建名称为 的符号来表示名称为 xxx的局部变量. nnn$ModuleNumber 当前的值.
  • 每次任何模块被使用时,$ModuleNumber 的值都会增加.
  • 在计算 expr 之前,Module 使用新符号来替换出现在 expr 中任意位置除作为作用域结构(scoping construct)中的局部变量外的每一个局部变量.
  • 使用Module 创建的符号可以从模块返回.
  • 你使用Module 作为带有一个条件的变换法则的右式.
  • Module 结构可以以任何方式嵌套,如有必要内变量会被改名.
  • Module 是一个实现词典式作用域的作用域结构.
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
局部函数的动态编程:
对最大公约数(GCD)使用初始化局部变量的欧几里德Euclid算法:
每次运算 module 会产生一个临时的代码:
Module 的符号是临时的,如果它们不再被引用会被删除:
每次使用 Module 会增加 $ModuleNumber
如果没有必要指定给局部变量,产品品种应该使用常量:
WithModule 快:
Block 只作用于局部变量; 它不创造新的符号:
Unique 类似与 Module,产生新的变量:
局部变量不会受全局变量的影响,反之亦然:
Module 中的符号不会受到命名冲突:
Module 是作用域结构,内局部变量屏蔽外部的:
在嵌套作用域中,变量会被改名:
从其内部建立函数,以避免重新命名:
并行分配不适用于 Module 变量:
版本 2 的新功能
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
格式:   HTML  |  CDF