Mathematica动态列表操作

slo*_*uis 6 wolfram-mathematica dynamic

我坚持认为应该是一个相对简单的概念.我不了解Dynamic []如何处理增量列表操作.请考虑以下陈述:

In[459]:= x={{1,2}};
In[462]:= y=First[x]
Out[462]= {1,2}
In[463]:= z=First[y]
Out[463]= 1
Run Code Online (Sandbox Code Playgroud)

简单吧?现在,我希望z在我更改x时动态更新.这是我的尝试:

In[458]:= a={{1,2}};
In[452]:= b=Dynamic[First[a]]
Out[452]= {1,2}
In[449]:= c=Dynamic[First[b]]
Out[449]= {1,2}
Run Code Online (Sandbox Code Playgroud)

当我更改列表a中的值时,我看到相应的更改是b和c; 但是,我希望每个语句都能分开第一个元素.对动态列表的操作没有采取.

我的问题是为什么我们看到这种行为,我如何应用连续的动态列表操作?

先感谢您.

Mr.*_*ard 5

动态以不寻常的方式工作.请参阅:为什么这不起作用?动态选择

除非在屏幕上可见地显示该表达式b = Dynamic[First[a]],否则赋值不会计算除文字表达式之外的任何内容Dynamic[First[a]].

因此,当你写作时,你First[b]要求的第一部分Dynamic[First[a]]First[a].

Dynamic不应忽视以某种方式显示技巧而非内部功能的事实.误导功能Dynamic会导致很多混乱和挫折.然而,在您的简单示例中,您可以通过以下方式获得所需的行为,至少在视觉上:

b = Dynamic[First[a]]

c = Dynamic[First@First[b]]
Run Code Online (Sandbox Code Playgroud)