ローカル 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 スコープがあることがはっきりとわかります。私の推測では、1 つは Here から、もう 1 つは Local Here からでしょう。いくつかのアプローチを試しましたが、今のところどれもうまくいきません。
自動化とスクリプトRe: ローカル Here 名前空間に入ったときに Here 名前空間にアクセスするにはどうすればいいですか?直接はできないと思います(それがLocal Hereの目的のようなものですね)

プログラミング関数 (jmp.com)
Re: ローカル Here 名前空間に入ったときに Here 名前空間にアクセスするにはどうすればいいですか?こんにちは。
もしそうなら、「ルート名前空間」に最適なアプローチは何か教えていただけますか? 現在、グローバル名前空間を使用しており、Here 名前空間を活用して名前空間の汚染を回避するつもりです。私のスクリプトには約 80 個の変数が含まれています。
Re: ローカル Here 名前空間に入ったときに Here 名前空間にアクセスするにはどうすればいいですか?何をしているかによります。名前付き名前空間、匿名名前空間、グローバル、here、ローカルなどを利用できますが、それでも、私はほとんどの場合、スクリプトを Names Default To Here(1); で開始します。
Re: ローカル Here 名前空間に入ったときに Here 名前空間にアクセスするにはどうすればいいですか?Names Default to 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: ローカル Here 名前空間に入ったときに Here 名前空間にアクセスするにはどうすればいいですか?HERE名前空間が 2 つあり、それらが同じコンテンツ (ローカルの here のコンテンツ) を表示するのは奇妙です。
ローカルの here から抜け出すと、 Here名前空間は 1 つだけになり、 Names Default to Here(1)の内容が正しく表示されます。
JSL デバッガーに関する別の問題:
JMP15 以降、関数のローカル名前空間にはアクセスできなくなりました: JSL デバッガーの関数ローカル
Re: ローカル Here 名前空間に入ったときに Here 名前空間にアクセスするにはどうすればいいですか?確認しました。Local Here は Global および名前付き名前空間に問題なくアクセスできるようです。ただし、匿名名前空間を初期化するにはどうすればよいでしょうか?
基本的に私の考えは、エンドユーザーは変数を気にする必要はなく、それらの変数/名前空間は、関連付けられているデータ テーブルが閉じられた後に閉じられるというものです。Re: ローカル Here 名前空間に入ったときに Here 名前空間にアクセスするにはどうすればいいですか?この目的のために、 ここ名前空間を使用します。これは、スクリプト ウィンドウまたは作成されたウィンドウが開いている限り存続します。
スクリプト ウィンドウとレポートが閉じられると削除されます。
どうやってアクセスするのですか?
「キー」があれば、任意の名前空間にアクセスできます。
名前空間にアクセスできる場合は、名前空間への参照を作成し、それをキーとして使用します。
重要:
キーをここ名前空間に保存すると、外部からはアクセスできなくなります。
どこからでもアクセスできるようにするには、グローバル名前空間に保存するだけです。
-> グローバルは 1 つのキー変数によって「汚染」されます - もはや約 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);