グローバル名前空間¶
"//"(Rootオブジェクト)から始まる階層構造に含まれるオブジェクトの参照は、常にオブジェクトツリーの階層により参照されましたが、オブジェクトツリーとは無関係にどこからでも参照できるグローバル名前空間があります。
グローバル名前空間に置かれているオブジェクトは、//.Form1等のピリオドによる装飾を行わずに直接名前で参照することができます。
Biz/Browserが標準で内蔵するグローバル関数群は、グローバル名前空間に置かれているため、いつでも利用することができます。
ユーザ定義の関数をグローバル名前空間にロードすると、組み込みのグローバル関数のように利用できるようになります。
グローバル名前空間へのユーザ定義オブジェクトのロードは以下の構文により行います。
import global_name;
global_nameは、グローバル名とするオブジェクトの名前です。CRSインタプリタは、importステートメントを以下のように実行します。
- global_nameの確認を行います。
global_nameがクラス名、グローバル関数名と重複している場合エラーとなります。
global_nameが既にグローバル名前空間にロードされているユーザ定義オブジェクトと同じ名前の場合、何もしないで完了します。
- URLを生成します。
global_nameに拡張子".crs"を付加し、importステートメントを実行したCRSスクリプトがダウンロードされたURLと同じディレクトリからダウンロードするようにURLを生成します。
http://server/app1/menu.crsのCRSスクリプト中で、
import sample;
を実行した場合、http://server/app1/sample.crsというURLが生成されます。
- 生成したURLからCRSファイルをダウンロードして実行します。このダウンロードはGetメソッド同様にキャッシュの対象となります。
- 結果を確認します。
importするCRSファイルは以下のような記述が想定されています。
package sample1 { ← この名前がグローバル名前空間に置かれます。
Number data1;
Number data2;
function func1() {
:
}
function func2() {
:
}
function func3() {
:
}
}
このようなCRSをimportした場合、どのスコープからでも次のようにしてアクセスすることができるようになります。
var d1 = sample1.data1;
var d2 = sample1.func2();
グローバル名前空間にユーザ定義のオブジェクトをロードすると、共通関数などを有効に利用できるようになります。