DynamicModule
DynamicModule[{x,y,…},expr]
表示一个对象,可保持 expr 中所有 Dynamic 对象在计算过程中符号 x、y、… 的局部值. 在默认情况下, DynamicModule 中指定的符号甚至在整个 Mathematica 进程中都不会改变其值.
DynamicModule[{x=x0,y=y0,…},expr]
为 x、y、… 指定初始值.
更多信息和选项
- DynamicModule 首先为 expr 中的局部变量给出特定名称,如同 Module,然后计算得出的表达式,然后返回其封闭在 DynamicModule 中的新形式.
- 在一个笔记本中,它返回的形式通常显示在输出单元中,例如从 Manipulate 输出.
- 在一个 DynamicModule 结果的显示形式中,如果交互式改变或编辑 Dynamic 对象,使局部变量的任意值发生了改变,则 DynamicModule 对象相应作出反应.
- 当一个包含 DynamicModule 的笔记本保存时,一个 DynamicModule 中的局部变量值自动默认保存,使这些值在整个 Mathematica 进程实际上保持一致.
- 如果您复制一份包含 DynamicModule 对象在内的笔记本,副本中的局部变量将独立于原件中的局部变量,尽管它们的初始值相同.
- 可以给出以下选项:
-
BaseStyle {} 所显示的对象的基本样式指定 Deinitialization None 当 DynamicModule 不能再被显示时计算的表达式 DynamicModuleValues Automatic 对变量值,动态更新数据 ExcludedContexts Automatic SaveDefinitions 中排除的上下文 InheritScope False 将 DynamicModule 变量与另一个 DynamicModule 实例连接 IncludedContexts All SaveDefinitions 中包含的上下文 Initialization None DynamicModule 首次被显示时,计算的表达式 SaveDefinitions False 是否保存所有与 expr 相关的定义 SynchronousInitialization True 是否同步执行初始化 UndoTrackedVariables None 当变化时,应由前端的撤消机制来跟踪的变量 UnsavedVariables None 数值不应被保存的变量 - 当 DynamicModule 首次进行计算时,在计算过程中进行局部变量的初始赋值,然后只有当显示 DynamicModule 的输出时计算 Initialization 选项的任意设置.
- 当一个 DynamicModule 对象在某个特定笔记本中首次显示时,局部变量的保存值被恢复,然后计算 Initialization 选项的任意设置.
- 局部变量的全部数值被保存, 除了包括在 UnsavedVariables 列表中的变量. 符号的普通数值保存在 DynamicModule的第一个参数中;其它数值被保存在 DynamicModuleValues 选项的设置中.
- DynamicModule 具有属性 HoldAll.
- DynamicModule 结构可以任意嵌套,如果需要可以重新命名内部变量.
- DynamicModule 是一个作用域结构,以实现词汇的作用域.
范例
打开所有单元关闭所有单元基本范例 (1)
生成一个带有动态更新的局部变量的 Slider:
范围 (6)
DynamicModule 变量 (3)
DynamicModule 状态 (3)
在不同的 Mathematica 进程中,用 DynamicModule 保存显示状态:
Module 仅给出当前 Mathematica 进程的单一状态:
在显示内容前,用 Initialization 计算表达式:
Initialization 的计算是在局部变量赋值后:
选项 (16)
DynamicModuleValues (1)
局部变量的函数定义自动插入到 DynamicModuleValues:
ExcludedContexts (1)
用 ExcludedContexts{} 保存所有非保护符号的定义:
InheritScope (1)
用 DynamicModule 创建一个对话框,继承来自父 DynamicModule 的变量:
Initialization (4)
用 Initialization 保存内容中所需的计算:
第一个 DynamicModule 受分号抑制,所以它无法运行赋值:
SaveDefinitions (2)
应用 (3)
属性和关系 (2)
DynamicModule 和 Module 尽管表面相似但本质不同:
在这个范例中两个滑尺都会移动,当重新打开时如果不计算同样不起作用:
Manipulate 依据 DynamicModule 生成输出:
可能存在的问题 (1)
文本
Wolfram Research (2007),DynamicModule,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DynamicModule.html (更新于 2021 年).
CMS
Wolfram 语言. 2007. "DynamicModule." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/DynamicModule.html.
APA
Wolfram 语言. (2007). DynamicModule. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DynamicModule.html 年