여러분, 안녕하세요,
함수에서 식을 반환할 때 이상한 동작이 발생했으며 이에 대한 논의를 이미 찾을 수 없었습니다. 저는 거의 모든 것에 네임스페이스를 사용하는 습관이 있습니다. 함수가 표현식을 반환할 때 범위가 지정되지 않은 함수에 대해 표현식이 평가되지 않고 네임스페이스가 사용되는 경우 평가된다는 사실을 발견했습니다. 여기에서 무슨 일이 일어나고 있는지 아는 사람이 있습니까?
이 스크립트는 첫 번째 함수가 호출될 때 변수 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);