こんにちは、みんな、
関数から式を返すときに奇妙な動作に遭遇しましたが、これに関する議論はまだ見つかりませんでした。 私はほとんどすべてのことに名前空間を使用する習慣があります。 関数が式を返す場合、その式はスコープ外の関数については評価されませんが、名前空間が使用されている場合には評価されることがわかりました。 ここで何が起こっているのか知っている人はいますか?
このスクリプトは、最初の関数の呼び出し時に変数 x がインクリメントされず、2 番目の関数呼び出し時にインクリメントされることを示します。 私は 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);