Bonjour à tous,
J'ai rencontré un comportement étrange lors du renvoi d'une expression à partir d'une fonction et je n'ai déjà trouvé aucune discussion à ce sujet. J'ai l'habitude d'utiliser des espaces de noms pour à peu près tout. J'ai trouvé que lorsqu'une fonction renvoie une expression, l'expression n'est pas évaluée pour une fonction non délimitée, mais est évaluée si un espace de noms est utilisé. Est-ce que quelqu'un sait ce qui se passe ici?
Ce script doit montrer que la variable x n'est pas incrémentée lorsque la première fonction est appelée, mais est incrémentée lors du deuxième appel de fonction. J'utilise JMP v17.0.0, donc cela a peut-être été corrigé, mais je ne suis pas en mesure de mettre à jour pour le moment.
NewNamespace("varNamespace");
varNamespace:x = 0;<BR />
myFunc = Function({},
{DEFAULTLOCAL},
returnVal = Expr(varNamespace:x++);
NameExpr(returnVal);
);
myFunc();
Show(varNamespace:x);
NewNamespace("functionTest");
functionTest:myFunc = Function({},
{DEFAULTLOCAL},
returnVal = Expr(varNamespace:x++);
NameExpr(returnVal);
);
functionTest:myFunc();
show(varNamespace:x);