如何在不使用的情况下更改单元格的 $ContextPath Prepend
:
$ContextPath = Prepend[$ContextPath, "PackageName`"]
我正在查看文档,$ContextPath
并决定评估其中的第一个输入单元格。
评估前:
评估后:
我猜这里的不同之处在于,在编写此文档时,WebServices
并没有为编写它的人启用。我们可以看到这Global
是在该单元格的上下文中,因为已经明确提到了这一点。通过转到 来查看表达式Cell > Show Expression
。
该选项CellContext
设置为全局。现在,让我们创建一个新单元格并评估$Context
.
这意味着在该单元格内,我无法使用我在其他笔记本中创建的任何全局对象。我们可以通过更改单元格的 CellContext 选项来添加 Global。我们通过显示表达式和编辑来做到这一点。当您评估时,您会看到上下文已更改为全局。现在,让我们在刚刚将上下文更改为全局的单元格中尝试一下。
Print["Outside Module = ", $ContextPath]
Module[{},
Print["Inside Module = ", $ContextPath];
Manipulate[
Print["Inside Manipulate = ", $ContextPath];
Row[{
Plot[x, {x, -3, 3}, PlotRange -> {{-3, 3}, {-3, 3}}]
}],
{{p1, {-1, 2}}, Locator, Appearance -> "L1"}
]
]
你有没有得到这样的东西:
为什么 Manipulate 内部的上下文会发生变化?在其他笔记本中,这不会发生。我猜它与参考样式表的设置有关,但我无法弄清楚。我们如何临时更改文档笔记本的设置,以便我们可以在整个笔记本的任何地方使用全局上下文?