Se valutiamo queste righe uno per uno, x
verrà creato nel contesto cc
.Perché questo uso di Begin [] non funziona?
Begin["cc`"];
x = 1;
End[]
Tuttavia, se li valutiamo insieme,
(Begin["cc`"];
x = 1;
End[])
poi verrà creato in Global
x
. Questo nonostante la stampa cc`
quanto segue:
(Begin["cc`"];
Print[$Context];
End[])
Qual è il motivo di questo comportamento? La mia ipotesi è che i contesti contano solo durante la fase di analisi, non di valutazione.
Caso di utilizzo: volevo creare una tavolozza Button
che definirà alcuni simboli se non esistono ancora, in un contesto "privato" per evitare conflitti con i globali. Qual è il metodo preferito per fare questo, oltre a mettere tutte le definizioni in un file di pacchetto e caricarle dalla tavolozza? (Mi piacerebbe mantenere la tavolozza autonoma.)
Ho appena letto in quella documentazione che "L'interpretazione dei nomi dei simboli dipende dal contesto' Begin' colpisce quindi il parsing di espressioni di input." Questo risponde alla mia prima domanda. Il secondo è ancora valido. – Szabolcs