大家好,
从函数返回表达式时,我遇到了一些奇怪的行为,并且已经找不到任何关于此的讨论。 我习惯于几乎所有事情都使用名称空间。 我发现,当函数返回表达式时,不会针对无作用域函数计算该表达式,而是在使用命名空间时计算该表达式。 有谁知道这是怎么回事?
此脚本应显示变量 x 在调用第一个函数时不会递增,但会在第二个函数调用时递增。 我使用的是 JMP v17.0.0,因此这可能已得到修复,但我现在无法更新。
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);