EGL パーツの解決規則

パーツの解決規則では、EGL がパーツ名を検索し、プログラム内で参照を解決する方法を定めています。 これは、式におけるネーム解決で説明されている、式で名前を解決するための検索とは異なったプロセスです。

パーツの解決規則は、次のものに適用されます。
パーツの解決には、以下の 3 つの重要な概念があります。
EGL_ROOT
EGL_ROOT は、EGL とともに出荷されるすべてのパーツを保持している論理コンテナーです。
EGL ビルド・パス
EGL ビルド・パスは、プロジェクト間の可視性を制御しますが、EGL がパーツ名を解決しようとする際の検索順序も定めます。 EGL_ROOT は、暗黙的にパスの最後に追加されます。 詳しくは、「EGL プログラマー・ガイド」の『EGL ビルド・パス』を参照してください。
システム有効範囲
システム有効範囲には、インポートまたは完全修飾しなくても解決可能な EGL パーツのセットが含まれています。 現在、EGL_ROOT の中にあるのは、システム有効範囲に含まれるパーツのみです。 システム有効範囲を使用すると、システム・パーツ (レコード sqlLib.sqlData など) を、 修飾子または import 文を使用せずに参照できるようになります。
mySQLDataVar sqlData;

完全修飾パーツ名を解決する場合、EGL はビルド・パス上の各項目を検索し、指定のパッケージおよびパーツが含まれているか確認します。 EGL ビルド・パス上で検出された最初のパーツが使用されます。

非修飾のパーツ名を解決する場合、EGL は次のものに優先順位を付けます (順位順に説明します)。
単一パーツのインポート
EGL はまず、ソース・ファイル内にある単一パーツの import 文を確認して、名前を解決しようとします。 例えば、次の import 文は、名前 myLibrary を解決します。
import com.companyb.gl.myLibrary;
デフォルトのパッケージからパーツをインポートすることはできません。
現行パッケージ
単一パーツのインポートを確認した後、EGL は現行パッケージの残りの部分について名前がないか確認します。 例えば、上記のステップが失敗した場合、現行パッケージのパーツとして myLibrary という名前のライブラリーがあれば、EGL はそのライブラリーを使用して参照を解決します。
オンデマンドのインポート
EGL は、EGL ビルド・パスにある全プロジェクトについて順番に、そのオンデマンド import 文に各パッケージがないか検索していきます。 一致するパッケージがあった場合、EGL はそのパッケージに一致するパーツがないか検索します。 その一致したパッケージにパーツがない場合、 EGL は引き続き EGL ビルド・パス上で、同じ名前を持つ別のパッケージがないか検索していきます。
EGL は、このステップの間に、ソース・ファイル内のすべてのオンデマンド import 文を読み取ります。 複数のオンデマンド import 文が同じパーツ名を解決している場合、EGL はその名前に未確定のマークを付けます。1 つ以上のオンデマンド import 文を、 単一パーツの import または完全修飾パーツ名に置き換えて、この競合を解決してください。
com.companyb.payroll パッケージに myLibrary があった場合、 次のコードを使用すると、EGL によってその名前を解決できます。
import com.companyb.payroll.*;
デフォルトのパッケージからパーツをインポートすることはできません。
システム有効範囲
前記のいずれのステップでもパーツ名を解決できない場合にのみ、EGL は、システム有効範囲内で一致するパーツを検索します。

フィードバック