Если мы оценим эти строки одну за другой , x
будут созданы в контекст cc
.
Begin["cc`"];
x = 1;
End[]
Однако, если мы оценим их вместе,
(Begin["cc`"];
x = 1;
End[])
тогда x
будет создано в Global
. И это несмотря на следующую печать cc`
:
(Begin["cc`"];
Print[$Context];
End[])
В чем причина такого поведения? Я предполагаю, что контексты имеют значение только на этапе синтаксического анализа, а не оценки.
Пример использования: я хотел создать палитру Button
, которая будет определять некоторые символы, если они еще не существуют, в «частном» контексте, чтобы избежать конфликта с глобальными объектами. Какой метод является предпочтительным для этого , кроме помещения всех определений в файл пакета и загрузки их из палитры? (Я бы хотел, чтобы палитра оставалась автономной.)