Si evaluamos estas líneas uno a uno, se creará x
en el contexto cc
.¿Por qué este uso de Begin [] no funciona?
Begin["cc`"];
x = 1;
End[]
Sin embargo, si los evaluamos juntos,
(Begin["cc`"];
x = 1;
End[])
continuación x
se creará en Global
. Esto es a pesar de la siguiente impresión cc`
:
(Begin["cc`"];
Print[$Context];
End[])
¿Cuál es la razón de este comportamiento? Supongo que los contextos solo importan durante la fase de análisis, no de evaluación.
Caso de uso: Quería crear una paleta Button
que definirá algunos símbolos si aún no existen, en un contexto "privado" para evitar conflictos con los globales. ¿Cuál es el método preferido para hacer esto, aparte de poner todas las definiciones en un archivo de paquete y cargarlas desde la paleta? (Me gustaría mantener la paleta autónoma.)
acabo de leer en documentos que eso "La interpretación de los nombres de los símbolos depende del contexto' Begin' por lo tanto afecta el análisis de las expresiones de entrada." Eso responde mi primera pregunta. El segundo sigue en pie. – Szabolcs