如果我们评估这些行一个接一个,x
将在上下文cc
创建。为什么不使用Begin []工作?
Begin["cc`"];
x = 1;
End[]
但是,如果我们一起对其进行评估,
(Begin["cc`"];
x = 1;
End[])
然后x
将在Global
创建。尽管这是以下打印cc`
:
(Begin["cc`"];
Print[$Context];
End[])
什么是这种现象的原因?我的猜测是,上下文只在解析阶段,而不是评估。
用例:我想创建一个调色板Button
,它将在“私有”上下文中定义一些符号(如果它们还不存在),以避免与全局冲突。 除了将所有定义放入包文件中并从调色板中加载它们之外,执行此操作的首选方法是什么?? (我想保持调色板自成体系。)
我刚才读该文档是“符号名称的解释取决于上下文'Begin'从而影响输入表达式的分析。”这回答了我的第一个问题。第二个仍然站立。 – Szabolcs