syntax - 在 Mathematica 中将控制定义为变量

标签 syntax wolfram-mathematica

当我使用 Manipulate 时,我可以这样做:

Manipulate[x, {u, 1, 10}]

实际上我的控件又多又复杂,所以我更愿意采用它们 Manipulate 表达式的定义,如下所示:

control = {u, 1, 10}
Manipulate[x, control]

但这确实会导致错误:

Manipulate argument control does not have the correct form for a \
variable specification.

为什么它不这样工作?

最佳答案

Manipulate 具有 HoldAll attribute 。您可以强制 control 进行评估,一切正常

control = {u, 1, 10};
Manipulate[x[u], Evaluate[control]]

这样做的问题是变量 u 没有正确本地化,所以如果您已经在某处设置了,例如 u=1 ,那么 Manipulate 将返回错误。

如果您使用适当的作用域结构(例如 WithDynamicModule),这可能会更好,具体取决于您想要执行的操作。

这可能有点过头了,但它确保了 u 是本地的,并将 control 移动到操作之外:

DynamicModule[{u}, With[{control = {u, 1, 10}}, Manipulate[x[u], control]]]

关于syntax - 在 Mathematica 中将控制定义为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138827/

相关文章:

javascript - 是否可以通过编程方式捕获 JavaScript 语法错误?

javascript - 我不知道这段代码是什么

flutter - Flutter 语法中三点 [...] 的含义

list - 使用 Mathematica 中的函数式编程计算列表中元素之间的百分比差异?

wolfram-mathematica - 实现双指数平滑,即双指数移动平均线 (DEMA)

wolfram-mathematica - 映射 (/@) 行为

python - 函数声明中单独的星号 * 是什么意思?

wolfram-mathematica - 在 Mathematica 中求解微分方程

wolfram-mathematica - .NETLink 图形生成 PNG 而不是 EMF

memory - (*T)(nil) 和 &T{}/new(T) 有什么区别?戈朗