Ciao a tutti,
Mi sono imbattuto in uno strano comportamento durante la restituzione di un'espressione da una funzione e non sono riuscito a trovare già alcuna discussione al riguardo. Ho l'abitudine di usare gli spazi dei nomi praticamente per tutto. Ho scoperto che quando una funzione restituisce un'espressione, l'espressione non viene valutata per una funzione senza ambito, ma viene valutata se viene utilizzato uno spazio dei nomi. Qualcuno sa cosa sta succedendo qui?
Questo script dovrebbe mostrare che la variabile x non viene incrementata quando viene chiamata la prima funzione, ma viene incrementata alla seconda chiamata di funzione. Sto utilizzando JMP v17.0.0, quindi probabilmente è stato risolto, ma al momento non sono in grado di eseguire l'aggiornamento.
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);