如何在輸入Local 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後,它有2個Here範圍。我的猜測是,一個來自Here,另一個來自Local Here。我嘗試了幾種方法,但到目前為止沒有一種有效。
自動化和腳本編寫回覆:如何在輸入 Local Here 命名空間時存取 Here 命名空間?我認為你不能直接(這就是 Local Here 的目的)

程式設計功能 (jmp.com)
回覆:如何在輸入 Local Here 命名空間時存取 Here 命名空間?嗨,jthi,
如果是這種情況,您能否建議「根命名空間」的最佳方法是什麼?我現在正在使用全域命名空間,並打算利用此處命名空間並避免命名空間污染。我的腳本涉及約 80 個變數。
回覆:如何在輸入 Local Here 命名空間時存取 Here 命名空間?取決於你在做什麼。您可以使用命名名稱空間、匿名名稱空間、全域名稱空間、此處名稱空間、本機名稱空間…但是,我幾乎總是以「名稱預設到這裡」(1); 開始我的腳本。
回覆:如何在輸入 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)回覆:如何在輸入 Local Here 命名空間時存取 Here 命名空間?奇怪的是,有兩個HERE命名空間,並且它們顯示相同的內容 - 本地的命名空間在這裡。
當您走出本地此處時,只有一個Here命名空間,並且它正確顯示了Names Default to Here(1)命名空間的內容。
JSL 偵錯器的另一個問題:
自 JMP15 起,函數的本地命名空間不再可存取: JSL 偵錯器中的函數局部變數
回覆:如何在輸入 Local Here 命名空間時存取 Here 命名空間?我已經查過了。似乎本地在這裡可以存取全域和命名空間就好了。但是,我應該如何初始化一個匿名名稱空間?
基本上我的想法是最終用戶不需要關心變量,並且這些變量/命名空間將在與之關聯的數據表關閉後關閉。回覆:如何在輸入 Local Here 命名空間時存取 Here 命名空間?為此,請使用這裡命名空間。只要腳本視窗打開(或某些已建立的視窗),它就存在。
一旦腳本視窗和報告關閉,它將被刪除。
如何訪問它?
如果您有“密鑰”,您可以訪問任何名稱空間:
在存取命名空間時,只需建立對命名空間的引用並將其用作鍵即可。
重要的:
如果您將密鑰儲存在此處的命名空間中,則無法從外部存取它。
為了使其可以從任何地方訪問,只需將其儲存在全域命名空間中即可。
-> 全域被一個關鍵變數「污染」 - 不再被 ~ 80 個變數污染:)
JMP 將處理匿名「此處」命名空間,並在不再需要時將其刪除。
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);