EGL パッケージの概要

パッケージは、ソース・ファイルを編成したり、名前の競合を防いだりというように、フォルダーに似た働きをします。

厳密に言うと、パッケージは、関連したパーツの名前付きの集合になります。 ただし、もっと簡単に、ローカル・システム上のフォルダーやディレクトリーと同じものとして捉えることもできます。

パッケージは、ファイルを異なるコンテキストで分割することで、名前の競合を防ぎます。 同じ名前の 2 つのパーツを同じパッケージに定義することはできませんが、2 つの異なる パッケージが、それぞれ同じ名前のパーツを持つことはできます。その場合でも、プロジェクトやソース・フォルダーが異なるからといって、同じ名前のパッケージを作成しないようにして、パッケージの名前の競合を防ぐことが必要です。

EGL ソース・ファイル内のすべてのパーツは同一のパッケージに属します。 ファイル内に package ステートメントが ある場合、そのステートメントでそのパッケージ名を指定します。package ステートメントを 指定しない場合には、パーツはソース・フォルダーのルートに格納されます。 つまり、デフォルト・パッケージ に格納された状態になるわけです。 デフォルト・パッケージ内のファイルは、他のパッケージまたはプロジェクト内のパーツによって共有することができないため、package ステートメントを指定することをお勧めします。

パッケージ名には大/小文字の区別があります。パッケージの命名規則について詳しくは、 packageを参照してください。

パッケージの操作

パーツが、同じパッケージ内の別のパーツを参照するようにしたいときは、参照されるパーツの場所を指定する必要はありません。以下の例は、同じパッケージ内の 2 つのパーツ、 すなわちレコード・パーツとそれを使用するプログラム・パーツを示しています。
package com.companyb.firstpackage;

program testProgram type BasicProgram
    function main()
        myVariable myRecordPart;
    end
end

Record myRecordPart type BasicRecord
    field1 int;
    field2 string;
end
パーツが、異なるパッケージ内の別のパーツを参照するようにしたい場合は、そのパッケージ内の参照されるパーツの完全な場所を指定してください。以下の例では、プログラム・パーツが前述のレコード・パーツを使用しています。
package com.companyb.secondpackage;

program testProgram2 type BasicProgram
    function main()
        myVariable2 com.companyb.firstpackage.myRecordPart;
    end
end

つまり、import ステートメントを使用することで、ソース・ファイル内のパーツを使用することを EGL に伝えることができるわけです。 この方法でパーツをインポートすれば、そのパーツがあたかも現行パッケージ内にあるかのように使用できます。 したがって、そのパーツを使用するたびに、パッケージ内のパーツの完全な場所を指定する必要がなくなります。 このようにパーツをインポートすることを、「パーツを有効範囲に移動する」と呼ぶこともあります。

以下の例のプログラム・パーツは、先に定義したレコード・パーツを再び使用します。ただし、今度は最初にパーツをインポートします。
package com.companyb.thirdpackage;

import com.companyb.firstpackage.myRecordPart;

program testProgram3 type BasicProgram
    function main()
        myVariable3 myRecordPart;
    end
end
import ステートメントは、パーツへのパッケージ・パスとパーツ名を使用します。ソース・ファイル名は使用しませんので、注意してください。

import について詳しくは、 import および use 文を参照してください。


フィードバック