Hola a todos,
Me encontré con un comportamiento extraño al devolver una expresión de una función, y ya no pude encontrar ninguna discusión sobre esto. Tengo la costumbre de usar espacios de nombres para casi todo. Descubrí que cuando una función devuelve una expresión, la expresión no se evalúa para una función sin ámbito, pero se evalúa si se usa un espacio de nombres. ¿Alguien sabe lo que está pasando aquí?
Este script debería mostrar que la variable x no se incrementa cuando se llama a la primera función, sino que se incrementa en la segunda llamada de función. Estoy usando JMP v17.0.0, por lo que posiblemente se haya solucionado, pero no puedo actualizar en este momento.
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);