Module

Module[{x,y,},expr]

指定在 expr 中出现的符号 xy 应被当作局部值.

Module[{x=x0,},expr]

用来定义 x, 的初始值.

更多信息

  • Module允许用户创建局部变量,该局部变量的名称相对于模块是局部的.
  • 在每次被调用时,Module 创建新的符号来表示它的每个局部变量.
  • Module 创建名称为 xxx$nnn 的符号来表示名称为 xxx的局部变量. nnn$ModuleNumber 当前的值.
  • 每次任何模块被使用时,$ModuleNumber 的值都会增加.
  • 在计算 expr 之前,Module 使用新符号来替换出现在 expr 中任意位置除作为作用域结构(scoping construct)中的局部变量外的每一个局部变量.
  • 使用 Module 创建的符号具有 Temporary 属性.
  • 使用 Module 创建的符号可以从模块返回.
  • 你使用 Module[{vars},body/;cond] 作为带有一个条件的变换法则的右式.
  • Module 具有 HoldAll 属性.
  • Module 结构可以以任何方式嵌套,如有必要内变量会被改名.
  • Module 是一个实现词典式作用域的作用域结构.

范例

打开所有单元关闭所有单元

基本范例  (1)

应用  (2)

局部函数的动态编程:

对最大公约数(GCD)使用初始化局部变量的欧几里德(Euclid)算法:

属性和关系  (8)

每次运算模块会产生一个临时的代码:

Module 的符号是临时的,如果它们不再被引用就会被删除:

每次使用 Module 会增加 $ModuleNumber

如果没有必要赋值给一个局部变量的话, 那么就应该使用常量:

WithModule 快:

Block 只作用于局部变量; 它不创造新的符号:

Unique 类似与 Module,产生新的变量:

局部变量不会受全局变量的影响,反之亦然:

Module 中的符号不会受到命名冲突:

可能存在的问题  (3)

Module 是作用域结构,内局部变量屏蔽外部的:

在嵌套作用域中,变量会被改名:

从其内部建立函数,以避免重新命名:

并行赋值不适用于 Module 变量:

Wolfram Research (1991),Module,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Module.html.

文本

Wolfram Research (1991),Module,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Module.html.

CMS

Wolfram 语言. 1991. "Module." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/Module.html.

APA

Wolfram 语言. (1991). Module. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Module.html 年

BibTeX

@misc{reference.wolfram_2024_module, author="Wolfram Research", title="{Module}", year="1991", howpublished="\url{https://reference.wolfram.com/language/ref/Module.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_module, organization={Wolfram Research}, title={Module}, year={1991}, url={https://reference.wolfram.com/language/ref/Module.html}, note=[Accessed: 17-November-2024 ]}