Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 어떻게 액세스하나요?안녕하세요 여러분,
로컬 Here 네임스페이스를 입력하는 동안 Here 네임스페이스에 액세스하는 데 문제가 있습니다. 내 예제 스크립트는 다음과 같습니다.
Names Default To Here(1);
Delete Symbols();
// Declare a variable in the "Here" scope
x = "Variable";
Local Here(
// Access the "Here" scope variable
y = Eval(Namespace("here") << Get("x"));
Show(y);
);디버거를 사용했을 때, Local Here에 들어간 후 Here 범위가 2개 있는 것을 분명히 볼 수 있었습니다. 제 추측은 하나는 Here에서, 다른 하나는 Local Here에서 온 것입니다. 저는 여러 가지 방법을 시도해 보았지만 지금까지는 아무것도 효과가 없습니다.
자동화 및 스크립팅Re: Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 액세스하는 방법?내 생각엔 직접적으로는 할 수 없을 것 같아요(그게 Local Here의 목적이기도 하죠)

프로그래밍 함수(jmp.com)
Re: Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 액세스하는 방법?안녕하세요 jthi 님,
그렇다면 "루트 네임스페이스"에 대한 가장 좋은 접근 방식은 무엇인지 조언해 주시겠습니까? 저는 지금 글로벌 네임스페이스를 사용하고 있으며, 여기 네임스페이스를 활용하고 네임스페이스 오염을 피하려고 합니다. 제 스크립트에는 ~80개의 변수가 포함되어 있습니다.
Re: Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 액세스하는 방법?무엇을 하는지에 따라 다릅니다. 명명된 네임스페이스, 익명 네임스페이스, 글로벌, 여기, 로컬 등을 활용할 수 있지만, 저는 항상 스크립트를 Names Default To Here(1)로 시작합니다.
Re: Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 액세스하는 방법?HERE(1)에 대한 이름이 기본값이 아니면 생성된 변수는 전역 네임스페이스를 "오염"시킵니다.
이름이 HERE(1)로 기본 설정되어 있으면 생성된 변수는 Here 네임스페이스를 "오염"시킵니다.
변수를 구성하려면 고유한 네임스페이스를 만들고 거기에 변수를 만들 수 있습니다.
Names Default To Here(1);
Delete Symbols();
// Declare a variable in the "Here" scope
x = "Variable";
//get the value
ns = Namespace("here");
val = ns << Get Value("x");
Print(val);
Show(x);
new namespace("myNS");
NS:x = "variable";
Show(NS:x)Re: Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 액세스하는 방법?두 개의 HERE 네임스페이스가 있고 둘 다 같은 콘텐츠를 표시한다는 것은 이상합니다. 하나는 로컬 here의 콘텐츠입니다.
로컬 here에서 나가면 Here 네임스페이스가 하나만 있고 Names Default to Here(1) 의 내용이 올바르게 표시됩니다.
JSL 디버거의 또 다른 문제:
JMP15 이후로 함수의 로컬 네임스페이스에 더 이상 액세스할 수 없습니다. JSL 디버거의 함수 로컬
Re: Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 액세스하는 방법?확인했습니다. Local Here는 Global과 명명된 네임스페이스에 잘 접근할 수 있는 것 같습니다. 하지만 익명 네임스페이스를 어떻게 초기화해야 할까요?
기본적으로 제 생각은 최종 사용자는 변수에 대해 신경 쓸 필요가 없고, 데이터 테이블이 닫힌 후에 해당 변수/네임스페이스도 닫히게 된다는 것입니다.Re: Local Here 네임스페이스에 들어간 동안 Here 네임스페이스에 액세스하는 방법?이 목적을 위해 여기 네임스페이스를 사용합니다. 스크립팅 창이 열려 있거나 생성된 창이 있는 한 살아 있습니다.
스크립트 창과 보고서를 닫으면 삭제됩니다.
어떻게 접근하나요?
"키"가 있으면 모든 네임스페이스에 액세스할 수 있습니다.
네임스페이스에 접근할 수 있는 순간에는 네임스페이스에 대한 참조를 생성하여 키로 사용하면 됩니다.
중요한:
여기 네임스페이스에 키를 저장하면 외부에서 접근할 수 없습니다.
어디서나 접근할 수 있게 하려면 글로벌 네임스페이스에 저장하기만 하면 됩니다.
-> 하나의 주요 변수에 의해 글로벌 "오염"됨 - 더 이상 ~80개 변수에 의해 오염되지 않음 : )
JMP는 익명의 "here" 네임스페이스를 처리하고 더 이상 필요하지 않으면 삭제합니다.
Names Default To Here(1);
Delete Symbols();
// Declare a variable in the outer "Here" scope
x = "Variable";
//myHere = Namespace("here"); // created inside HERE -> not accessible from local here
::myHere= Namespace("here"); // so let's create the reference in the global NS
z=5;
Local Here(
:: mylocalHere= Namespace("here"); // will be deleted after local HERE
// the same for "myHere": it will be deleted once the code is finished AND the editor is closed -> very convenient
::mypersistentNamespace = New Namespace("persistent"); // manually created -> persistent
persistent:y="still alive";
// Access the outer "Here" scope variable via the namespace reference
y = Eval(::myHere << Get value ("z"));
Show(y);
);
Show(:: mylocalHere); // deleted
Show(::mypersistentNamespace) // alive
다른 스크립팅 창에서:
Show(:: myHere);
Show(:: mylocalHere);
Show(::mypersistentNamespace);