公開日: 11/25/2021

名前空間とスコープの参照

名前付き変数参照の解決方法を左右する要因は数多くあります。表8.6に、名前付き変数参照が特定の状況でどのように解決されるかを示します。

メモ:

a:a::aは、Names Default To Hereモードをオフにした場合、JMP 9以降でも同義です。

現在の実行ポイントがユーザ定義の関数内、またはLocal 関数やParameter関数のモデル定義部分にある場合、Default Localを使用すると、Local名前空間が作成に使用されます。ただし、参照の規則は変わりません。

表8.6 名前空間参照

形式

参照タイプ

参照ルール

作成ルール

a

非修飾

Names Default To Hereモードがオンの場合、次の場所で変数を探します。

Local名前空間

Here名前空間

現在のデータテーブル

Names Default To Hereモードがオフの場合、次の場所で変数を探します。

Local名前空間

Here名前空間

Global名前空間

現在のデータテーブル

Names Default To Hereモードがオンの場合、Local名前空間内またはHere名前空間内に変数を作成する。

Names Default To Hereモードがオフの場合、Local名前空間内またはGlobal名前空間内に変数を作成する。

:a

現在のデータテーブル

現在のデータテーブル内で変数を探す。

(該当なし)

::a

Global:a

Global

Global名前空間内で変数を探す。

Global名前空間内に変数を作成する。

ns:a

dt:a

Here:a

"name":a

expr:a

修飾

指定された名前空間内で変数を探す。変数が見つからない場合、エラーが戻されます。

指定された名前空間内に変数を作成する。ぞれ以前の値は上書きされます。

ns["a"]

ns[expr]

添え字

指定された名前空間内で変数を探す。変数が見つからない場合、エラーが戻されます。

指定された名前空間内に変数を作成する。ぞれ以前の値は上書きされます。

Platform:a

修飾

プラットフォームに含まれている変数を探す。

プラットフォーム内に変数を作成する。

Local:a

修飾

ローカル関数内において、該当する変数を探す。なお、他の関数を呼び出している場合、呼び出しに使われている引数も、範囲に含みます。詳細については、Local:aの例を参照してください。

変数が指定されたローカル関数内に、変数を作成する。なお、他の関数を呼び出している場合、呼び出しに使われている引数も、範囲に含みます。

Window:a

修飾

New Windowのwindow名前空間内で、変数を探す。

New Windowのwindow名前空間内に変数を作成する。

Box:a

修飾

New Window内に指定されたContext Boxの中で、変数を探す。

New Window内に指定されたContext Boxの中に変数を作成する。

Local:aの例

サンプルスクリプト

ログ出力

Delete Symbols();

Local( {d1l1 = 12},

local:f1f1 = Function( {fa1, fa2},

{fl1 = 99},

local:fa12 = fa1 + fa2;

Local( {d2l1 = 56},

local:l2l2 = 78;

Show( fa12 );

Show( fl1 );

Try( Show( d1l1 ), Write( "\!n\!n***Error=" || Char( exception_msg ) || "\!n" ) );

Show Symbols();

);

local:fa12;

);

f1f1( 2, 3 );

);

fa12 = 5;

fl1 = 99;

dil1 = 12;

// Local

d2l1 = 56;

l2l2 = 78;

// 2 Local

// Local

fa1 = 2;

fa12 = 5;

fa2 = 3;

fl1 = 99;

// 4 Local

// Local

d1l1 = 12;

// 1 Local

5

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).