パッケージは、ソース・ファイルを編成したり、名前の競合を防いだりというように、フォルダーに似た働きをします。
厳密に言うと、パッケージは、関連したパーツの名前付きの集合になります。 ただし、もっと簡単に、ローカル・システム上のフォルダーやディレクトリーと同じものとして捉えることもできます。
パッケージは、ファイルを異なるコンテキストで分割することで、名前の競合を防ぎます。 同じ名前の 2 つのパーツを同じパッケージに定義することはできませんが、2 つの異なる パッケージが、それぞれ同じ名前のパーツを持つことはできます。その場合でも、プロジェクトやソース・フォルダーが異なるからといって、同じ名前のパッケージを作成しないようにして、パッケージの名前の競合を防ぐことが必要です。
EGL ソース・ファイル内のすべてのパーツは同一のパッケージに属します。 ファイル内に package ステートメントが ある場合、そのステートメントでそのパッケージ名を指定します。package ステートメントを 指定しない場合には、パーツはソース・フォルダーのルートに格納されます。 つまり、デフォルト・パッケージ に格納された状態になるわけです。 デフォルト・パッケージ内のファイルは、他のパッケージまたはプロジェクト内のパーツによって共有することができないため、package ステートメントを指定することをお勧めします。
パッケージ名には大/小文字の区別があります。パッケージの命名規則について詳しくは、 packageを参照してください。
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 文を参照してください。