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