Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?Salut tout le monde,
J'ai des difficultés à accéder à l'espace de noms Here lors de la saisie de l'espace de noms Local Here. Mon exemple de script est le suivant :
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);
);Lorsque j'ai utilisé le débogueur, je peux clairement voir qu'après avoir entré Local Here, il y a 2 portées Here. Je suppose que l'une vient d'Here et l'autre de Local Here. J'ai essayé plusieurs approches, mais aucune ne fonctionne jusqu'à présent.
Automatisation et scriptsRe : Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?Je pense que tu ne peux pas directement (c'est un peu le but de Local Here)

Fonctions de programmation (jmp.com)
Re : Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?Salut Jthi,
Si tel est le cas, pourriez-vous me conseiller quelle est la meilleure approche pour « l'espace de noms racine » ? J'utilise actuellement l'espace de noms global et j'ai l'intention de tirer parti de l'espace de noms Here et d'éviter de polluer l'espace de noms. Mon script implique environ 80 variables.
Re : Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?Cela dépend de ce que vous faites. Vous pouvez utiliser des espaces de noms nommés, des espaces de noms anonymes, globaux, ici, locaux,... mais malgré tout, je commencerais presque toujours mes scripts avec Names Default To Here(1);
Re : Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?Sans les noms par défaut ICI(1), les variables générées « pollueront » l'espace de noms global.
Avec les noms par défaut HERE(1), les variables générées « pollueront » l'espace de noms Here .
Pour organiser les variables, vous pouvez créer votre propre espace de noms et y créer les variables :
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)Re : Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?Il est étrange qu'il y ait deux espaces de noms HERE et qu'ils affichent le même contenu - celui du local here.
Lorsque vous sortez de l'espace local ici, il n'y a qu'un seul espace de noms Ici et il affiche correctement le contenu de l'espace Noms par défaut à Ici(1) .
Un autre problème avec le débogueur JSL :
depuis JMP15, l'espace de noms local des fonctions n'est plus accessible : Fonctions locales dans le débogueur JSL
Re : Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?J'ai vérifié. Il semble que Local Here puisse accéder sans problème aux espaces de noms globaux et nommés. Cependant, comment suis-je censé initialiser un espace de noms anonyme ?
Fondamentalement, mon idée est que l'utilisateur final n'a pas besoin de se soucier des variables, et ces variables/espaces de noms seront fermés une fois la table de données associée fermée.Re : Comment accéder à l'espace de noms Here lors de la saisie de l'espace de noms local Here ?Pour cela, utilisez l'espace de noms Ici . Il existe tant que la fenêtre de script est ouverte - ou qu'une fenêtre a été créée.
Il sera supprimé une fois la fenêtre de script et les rapports fermés.
Comment y accéder ?
Vous pouvez accéder à n'importe quel espace de noms si vous avez la « clé » :
À un moment donné, avec accès à l'espace de noms, créez simplement une référence à l'espace de noms et utilisez-la comme clé.
Important:
Si vous stockez la clé dans l'espace de noms Ici , elle n'est pas accessible de l'extérieur.
Pour le rendre accessible de partout, il suffit de le stocker dans l'espace de noms global.
-> global "pollué" par une variable clé - et non plus par ~ 80 variables : )
JMP gérera l'espace de noms anonyme « ici » et le supprimera une fois qu'il ne sera plus nécessaire.
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
à partir d’une autre fenêtre de script :
Show(:: myHere);
Show(:: mylocalHere);
Show(::mypersistentNamespace);