相关疑难解决方法(0)

Mathematica中的词法和动态范围:具有Module,With和Block的局部变量

以下代码按预期返回14:

Block[{expr},
  expr = 2 z;
  f[z_] = expr;
  f[7]]
Run Code Online (Sandbox Code Playgroud)

但是,如果你改变BlockModule则返回2*z.除了expr你本地化之外,其他变量似乎并不重要.我以为我理解Mathematica中的Module,Block和With但是我无法解释这个例子中Module和Block之间的行为差​​异.

相关资源:

PS:感谢迈克尔·皮拉特, 达沃拉克比尔·怀特追随这种奇怪的气味.Davorak澄清并深入探讨了问题的核心: 为什么Mathematica会破坏模块中的正常范围规则?

variables scope localization wolfram-mathematica module

7
推荐指数
1
解决办法
1064
查看次数