Utilisation de l'espace de noms intégré, noms par défaut ici, fonction des variables localesBonjour, j'ai une question sur les espaces de noms dans les scripts de module et les fonctions de ces scripts.
Si je comprends bien, toute variable définie où Names Default to Here () est true sera assignée dans un espace de noms "ici". Ce dont je ne suis pas sûr, c'est la portée de cet espace de noms. «Ici» est-il toujours considéré comme le script complet (par exemple dans un module) ou peut-il également créer des variables locales à des fonctions individuelles dans un script? Quelle est la bonne façon de créer des variables locales dans une fonction? Existe-t-il un moyen pour les variables définies dans chaque fonction d'être locales uniquement pour cette fonction et non pour le script complet? Ce que j'imagine est quelque chose comme ci-dessous.
//Script to define different scopes of variables<BR />Names Default to Here(1); //set variables to be scoped to this script by default<BR />a = 1;<BR />b = 2;<BR /><BR />Function1 = Function({},<BR /> Names Default to Here(1);<BR /> c = 3;<BR />);<BR /><BR />Function2 = Function({},<BR /> Names Default to Here(1);<BR /> d = 4;<BR />);@lbrickweg @jcimini
Re: utilisation de l'espace de noms intégré, noms par défaut ici, fonction des variables localesHmm désolé pour le formatage là-bas
//Script to define different scopes of variables
Names Default to Here(1); //set variables to be scoped to this script by default
a = 1;
b = 2;
Function1 = Function({},
Names Default to Here(1); //set variables set in Function1 to be scoped only to Function1
c = 3;
);
Function2 = Function({},
Names Default to Here(1); //set variables set in Function2 to be scoped only to Function2
d = 4;
);Re: utilisation de l'espace de noms intégré, noms par défaut ici, fonction des variables localesNoms par défaut ici (1) signifie que tous les symboles non qualifiés utilisés / créés pendant cette soumission (exécutant un script) sera dans le même espace de noms Here. C'est donc plus large qu'un simple fichier JSL. Donc, si A.jsl inclut B.jsl alors que Noms par défaut à Here est activé, les symboles créés par A et B seront tous les deux disponibles dans le même espace de noms Here.
Pour les locaux de fonction, vous devez utiliser une liste de locaux:
/* Default Local */
slow identity = Function({x}, {Default Local},
x squared = x*x; // unqualified name x squared is defaulted to function local
Sqrt(x squared)
);
/* Or list them explicitly */
slow identity = Function({x}, {x squared},
x squared = x*x; // local because we declared it above
Sqrt(x squared)
);
/* Or qualify them */
slow identity = Function({x},
local:x squared = x*x; // qualify to local explicitly
Sqrt(x squared)
);Re: utilisation de l'espace de noms intégré, noms par défaut ici, fonction des variables localesJ'ai compris! La langue «par soumission» est très utile.
En guise de suivi, lors de l'exécution de différents modules depuis App Builder, les scripts de chaque module sont-ils inclus lors du lancement de .jmpapp? Ou les scripts pour chaque module sont-ils réellement soumis séparément lors de << Créer une instance, de sorte que chaque module ait son propre espace de noms Here?
En bref, lorsque vous utilisez un jmpapp, est-ce qu'ici se réfère généralement à chaque module ou à l'application dans son ensemble?