大家好,
從函數返回表達式時,我遇到了一些奇怪的行為,並且已經找不到任何關於此的討論。 我習慣於對幾乎所有事情都使用名稱空間。 我發現,當函數返回表達式時,不會針對無作用域函數計算該表達式,而是在使用命名空間時計算該表達式。 有誰知道這是怎麼回事?
此腳本應顯示變量 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);