【发布时间】:2011-12-16 13:58:33
【问题描述】:
如果我们逐个评估这些行,x 将在上下文cc 中创建。
Begin["cc`"];
x = 1;
End[]
但是,如果我们一起评估它们,
(Begin["cc`"];
x = 1;
End[])
然后x 将在Global 中创建。尽管有以下打印cc`:
(Begin["cc`"];
Print[$Context];
End[])
这种行为的原因是什么?我的猜测是上下文只在解析阶段很重要,而不是评估。
用例:我想创建一个调色板Button,它将在“私有”上下文中定义一些尚不存在的符号,以避免与全局变量发生冲突。 最好的方法是什么,除了将所有定义放在一个包文件中并从调色板加载它们? (我想保持调色板独立。)
【问题讨论】:
-
我刚刚在那个文档中读到“符号名称的解释取决于上下文。
Begin因此会影响输入表达式的解析。”这回答了我的第一个问题。第二个仍然存在。
标签: parsing wolfram-mathematica symbols