如何在进入本地 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 后,它有 2 个 Here 范围。我猜一个来自 Here,另一个来自 Local Here。我尝试了几种方法,但到目前为止都没有奏效。
自动化和脚本回复:如何在进入本地 Here 命名空间时访问 Here 命名空间?我认为你不能直接这样做(这有点像 Local Here 的目的)

编程函数 (jmp.com)
回复:如何在进入本地 Here 命名空间时访问 Here 命名空间?嗨,jthi,
如果是这种情况,您能否建议“根命名空间”的最佳方法是什么?我现在正在使用全局命名空间,并打算利用此处命名空间并避免命名空间污染。我的脚本涉及约 80 个变量。
回复:如何在进入本地 Here 命名空间时访问 Here 命名空间?取决于你正在做什么。你可以使用命名命名空间、匿名命名空间、全局、此处、本地……但是,我几乎总是以名称默认为此处 (1) 来开始我的脚本;
回复:如何在进入本地 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)回复:如何在进入本地 Here 命名空间时访问 Here 命名空间?奇怪的是,这里有两个命名空间,而且它们显示相同的内容 - 即这里的本地命名空间。
当您退出本地时,这里只有一个Here命名空间,并且它正确显示了名称默认为 Here(1)的内容。
JSL 调试器的另一个问题:
从 JMP15 开始,函数的本地命名空间不再可访问: JSL 调试器中的函数本地
回复:如何在进入本地 Here 命名空间时访问 Here 命名空间?我检查过了。似乎本地这里可以很好地访问全局和命名命名空间。但是,我应该如何初始化匿名命名空间?
基本上我的想法是最终用户不需要关心变量,并且那些变量/命名空间将在与之关联的数据表关闭后关闭。回复:如何在进入本地 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);