Le comportement de la portée des variables pour print() devrait correspondre à tout le resteQu'est-ce qui a inspiré cette demande de liste de souhaits ?
J'ai passé un temps fou à déboguer un problème de portée des variables. Si `{default local}` est utilisé dans une fonction (ce que je fais presque toujours), la fonction ne peut pas accéder aux variables globales à moins que la portée ne soit explicitement spécifiée avec `::` (ce que j'ignorais). Or, `Print()` se recherche silencieusement même sans `::`, et comme `Print()` est un outil de débogage assez basique, c'est très perturbant !
Quelle amélioration souhaiteriez-vous voir ?
La fonction Print() devrait se comporter de la même manière que toutes les autres fonctions en termes de portée des variables.
Pourquoi cette idée est-elle importante ?
Le comportement actuel est illogique et incohérent.
JMP19.1.1.
Automatisation et scriptageRe: Le comportement de la portée des variables pour print() devrait correspondre à tout le reste - Statut modifié en : Informations requisesBonjour @JohnJoyceFlusso , merci d'avoir soumis votre demande. Pourriez-vous fournir un script illustrant ce comportement ?
Re: Le comportement de la portée des variables pour print() devrait correspondre à tout le resteVoici un script minimal qui illustre le problème : Print() fonctionne, mais msgbox() ne fonctionne pas.
N.B. : il ne s'agit pas d'une fonction utile, mais simplement d'une démonstration du problème.
Malheureusement, la fonction Print() se comporte différemment de toutes les autres fonctions en ce qui concerne la portée des variables.
Je n'ai jamais rencontré d'autre langue qui fonctionne ainsi. Cela semble aberrant.
Je suggère que la fonction Print() ne devrait pas être différente du reste.
dummy = "Hello";
test = Function( {},
{default local},
Print( dummy );
msgbox( dummy );
);
test();
Re: Le comportement de la portée des variables pour print() devrait correspondre à tout le resteVeuillez m'excuser pour la confusion concernant msgbox(), qui est en réalité ma propre fonction et non une fonction intégrée.
Voici un exemple qui illustre bien mon propos… la première tentative avec les boutons radio n’affiche aucune option, car « options » n’est pas définie localement ; et pourtant, la fonction print() y accède comme par magie.
Une fois les options définies localement, les mêmes boutons radio fonctionnent la deuxième fois.
L'idée est que la fonction print() ne devrait pas se comporter différemment des autres fonctions, car cela rend son utilisation comme outil de débogage quelque peu délicate.
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
New Window( "Pick one",
<
<MODAL></MODAL>
<BR /> <BR />
Re: Le comportement de la portée des variables pour print() devrait correspondre à tout le reste@JohnJoyceFlusso
Vous pouvez toujours accéder à la variable « options » depuis l'intérieur de la fonction en utilisant eval( eval expr() ). Cela fonctionne pour moi :
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
eval( eval expr( New Window( "Pick one",
<
<MODAL></MODAL>
Re: Le comportement de la portée des variables pour print() devrait correspondre à tout le resteMerci, oui, c'est le cas (de même que l'accès à « options » via ::options, comme l'ont souligné les membres du support).
Mon problème demeure que la fonction Print() se comporte différemment de tout le reste, ce qui est illogique.