透過新單元向外暴露其他單元的識別符
有時你需要將另一個單元內的識別符,在目前的新單元中重新匯出並對外開放。最終效果:只要參照此新單元,就能直接使用該識別符。
適用場景:
- 為舊版單元提供相容性,保留舊有的呼叫寫法;
- 封裝底層內部單元,對外部隱藏底層實作檔案。
實作方式:在目前單元的 interface 區段重新定義同名/別名識別符,轉發底層單元的型別、常數。
修改 MyUnit.pas
unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
interface
uses Graphics;
type
// 方式1:建立別名,將 Graphics.TColor 對外命名為 TMyColor
TMyColor = TColor;
// 方式2:使用原始名稱對外暴露,必須加上單元限定 Graphics. 避免自我參照迴圈
TColor = Graphics.TColor;
const
// 常數同樣支援轉發暴露
clYellow = Graphics.clYellow;
clBlue = Graphics.clBlue;
implementation
end.Code language: PHP (php)
完整範例
unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
interface
uses Graphics;
type
// 1 Graphics.TColor 型別別名 TMyColor
TMyColor = TColor;
// 2 暴露原始名稱
// 加上 Graphics. 限定避免自我迴圈參照
TColor = Graphics.TColor;
const
// 常數也支援此機制
clYellow = Graphics.clYellow;
implementation
end.Code language: PHP (php)
主程式
program showcolor;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
uses MyUnit;
var
C1: TMyColor;
C2: TColor;
begin
C1 := clYellow;
C2 := clYellow;
end.
Code language: PHP (php)

在主程式中,我們使用 MyUnit 內重新定義的名稱。
