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

Dynamic

Dynamic[expr]
表示一个显示 expr 动态更新值的对象。如果用交互方式改变或编辑 Dynamic[expr],则赋值 expr=val ,给出 expr 新值 val,且该值与显示形式一致。
Dynamic[expr, None]
不允许交互方式改变或编辑。
Dynamic[expr, f]
val 进行交互式改变或编辑时继续计算 f[val, expr]
Dynamic[expr, {f, fend}]
在交互式改变或编辑完成时计算 fend[val, expr]
Dynamic[expr, {fstart, f, fend}]
在交互式改变或者编辑开始时计算 fstart[val, expr]
  • Dynamic[expr] 不仅可以直接显示为表达式,也可以显示为基本图形的坐标或者滑尺之类的对象,或作为选项的设置。
  • 当用于通过交互运算为 expr 赋值时, Dynamic[expr] 中的表达式通常是一个符号 x、一个对象 x[i]、一个部分 e[[i]] 或者一个列表 {x, y, ...}
  • 例如在图形中,Point[Dynamic[{x, y}]] 表示一个点,其坐标根据 xy 的当前值动态更新。当该点交互移动时,执行 {x, y}={valx, valy} 形式的赋值。Point[Dynamic[{x, y}]] 可以交互移动; 而Dynamic[Point[{x, y}]] 不行。
  • Dynamic[expr] 需要 expr 值时便会对其进行计算,它确定其中任何变量值的类型,虽然有些可能已经被改变。
  • 如果 RefreshClock 对象出现在 Dynamic[expr] 的表达式计算中,则 expr 将通常需要重新计算。
  • Dynamic 具有属性 HoldFirst, 所以在需要显示 expr 值之前不对其进行计算。
  • Dynamic[expr, f] 使交互式运算不改变 expr,除了因为 f[val, expr] 计算。
  • Dynamic[expr, None] 表示对象不能交互式改变,但是如果 expr 的值由于其它原因改变时它也会改变。
  • Dynamic[expr, Temporary] 允许一个对象的显示形式在交互式运算过程中改变,但是只会在运算完成后对 expr 赋值更新。
  • 对交互式鼠标操作而言,Dynamic[expr, {fstart, f, fend}] 通常在按下鼠标时计算 fstart[val, expr],然后在鼠标移动时计算 f[val, expr],然后在鼠标释放时计算 fend[val, expr]
  • 如果鼠标未移动,则 fstartffend 分别只计算一次。
  • f[val, expr] 每次在 fstart[val, expr] 计算后立即进行计算,最后计算完成时,val 的值总是与 fend[val, expr] 中相同。
  • 可以影响 Dynamic 对象的交互式操作包括拖曳图形中的元素或者类似 Slider 对象中的元素,以及诸如 InputField 对象中的字段编辑。
  • 函数 fstartffend 可以如下:
Automatic利用 Set 赋值
None不执行动作
Temporary允许交互式操作以临时改变
func计算 func[val, expr]
  • Dynamic[expr, f] 可用于对 expr 的赋值进行约束。
  • expr 为类似 x+y 的表达式时,Dynamic[expr, f] 可用于为单独变量赋值。
  • 一个函数 func[val, expr] 如果要为 expr 赋值就应该具有属性 HoldRest。这可以利用 Function[{v, e}, body, HoldRest] 实现。
  • 可以给出以下可选项:
DeinitializationNoneDynamic 不能再显示时,计算的表达式
EditableFalse是否允许编辑 Dynamic 的文本显示
EvaluatorAutomatic用于计算的核
InitializationNoneDynamic 首次被显示时进行计算的表达式
ShrinkingDelay0.如果被显示对象缩小,在缩小前延迟多长时间
TrackedSymbolsAll符号变化触发更新
UpdateIntervalInfinity进行更新的时间间隔
  • 出于显示的需要,Dynamic[expr] 在明确要求数值的地方提供一个模拟赋值的显示,而不是进行表达式计算。
6 的新功能