Come accedere allo spazio dei nomi Here durante l'inserimento nello spazio dei nomi Here locale?Ciao a tutti,
Ho problemi ad accedere al namespace Here durante l'inserimento del namespace Here locale. Il mio script di esempio è il seguente:
Names Default To Here(1);
Delete Symbols();
// Declare a variable in the "Here" scope
x = "Variable";
Local Here(
// Access the "Here" scope variable
y = Eval(Namespace("here") << Get("x"));
Show(y);
);Quando ho usato il debugger, posso vedere chiaramente dopo aver inserito Local Here, che ha 2 ambiti Here. Immagino che uno sia da Here e l'altro da Local Here. Ho provato diversi approcci, ma nessuno funziona finora.
Automazione e scriptingR: Come accedere allo spazio dei nomi Here durante l'inserimento dello spazio dei nomi Here locale?Penso che non puoi farlo direttamente (questo è in un certo senso lo scopo di Local Here)

Funzioni di programmazione (jmp.com)
R: Come accedere allo spazio dei nomi Here durante l'inserimento dello spazio dei nomi Here locale?Ciao Jthi,
Se è così, potresti consigliarmi qual è il miglior approccio per "root namespace"? Sto usando Global namespace in questo momento e ho intenzione di sfruttare Here namespace ed evitare di inquinare namespace. Il mio script coinvolge ~80 variabili.
R: Come accedere allo spazio dei nomi Here durante l'inserimento dello spazio dei nomi Here locale?Dipende da cosa stai facendo. Puoi utilizzare namespace denominati, namespace anonimi, globali, qui, locali,... ma comunque, inizierei quasi sempre i miei script con Names Default To Here(1);
R: Come accedere allo spazio dei nomi Here durante l'inserimento dello spazio dei nomi Here locale?Senza i nomi predefiniti su HERE(1), le variabili generate "inquineranno" lo spazio dei nomi globale.
Impostando i nomi predefiniti su HERE(1), le variabili generate "inquineranno" lo spazio dei nomi Here .
Per organizzare le variabili, puoi creare il tuo namespace e creare lì le variabili:
Names Default To Here(1);
Delete Symbols();
// Declare a variable in the "Here" scope
x = "Variable";
//get the value
ns = Namespace("here");
val = ns << Get Value("x");
Print(val);
Show(x);
new namespace("myNS");
NS:x = "variable";
Show(NS:x)R: Come accedere allo spazio dei nomi Here durante l'inserimento dello spazio dei nomi Here locale?È strano che ci siano due namespace HERE e che mostrino lo stesso contenuto: quello del namespace locale here.
Quando si esce dal locale here, c'è un solo namespace Here e mostra correttamente il contenuto di quello Names Default to Here(1) .
Un altro problema con il debugger JSL:
da JMP15 lo spazio dei nomi locale delle funzioni non è più accessibile: Locali delle funzioni in JSL Debugger
R: Come accedere allo spazio dei nomi Here durante l'inserimento dello spazio dei nomi Here locale?Ho controllato. Sembra che Local Here possa accedere a Global e named namespace senza problemi. Tuttavia, come si suppone che io inizializzi un namespace anonimo?
Fondamentalmente la mia idea è che l'utente finale non deve preoccuparsi delle variabili e che tali variabili/spazi dei nomi verranno chiusi dopo la chiusura della tabella dati associata.R: Come accedere allo spazio dei nomi Here durante l'inserimento dello spazio dei nomi Here locale?Per questo scopo, usa il namespace Qui . Esso rimane attivo finché la finestra di scripting è aperta, o una finestra creata.
Verrà eliminato una volta chiusa la finestra dello script e i report.
Come accedervi?
Puoi accedere a qualsiasi namespace se hai la "chiave":
Quando si ha accesso allo spazio dei nomi, basta creare un riferimento allo spazio dei nomi e utilizzarlo come chiave.
Importante:
Se si memorizza la chiave nello spazio dei nomi Qui , non sarà accessibile dall'esterno.
Per renderlo accessibile da qualsiasi luogo, basta memorizzarlo nello spazio dei nomi globale.
-> "inquinato" globalmente da una variabile chiave - non più da circa 80 variabili : )
JMP gestirà lo spazio dei nomi anonimo "here" e lo eliminerà quando non sarà più necessario.
Names Default To Here(1);
Delete Symbols();
// Declare a variable in the outer "Here" scope
x = "Variable";
//myHere = Namespace("here"); // created inside HERE -> not accessible from local here
::myHere= Namespace("here"); // so let's create the reference in the global NS
z=5;
Local Here(
:: mylocalHere= Namespace("here"); // will be deleted after local HERE
// the same for "myHere": it will be deleted once the code is finished AND the editor is closed -> very convenient
::mypersistentNamespace = New Namespace("persistent"); // manually created -> persistent
persistent:y="still alive";
// Access the outer "Here" scope variable via the namespace reference
y = Eval(::myHere << Get value ("z"));
Show(y);
);
Show(:: mylocalHere); // deleted
Show(::mypersistentNamespace) // alive
da un'altra finestra di scripting:
Show(:: myHere);
Show(:: mylocalHere);
Show(::mypersistentNamespace);