새 유닛으로 다른 유닛의 식별자를 외부에 노출하기
다른 유닛에 있는 식별자를 현재 새 유닛에서 다시 내보내 외부에 공개해야 하는 경우가 있습니다. 최종 효과: 이 새 유닛만 참조하면 해당 식별자를 직접 사용할 수 있습니다.
적용 시나리오:
- 구 버전 유닛 호환성을 지원하고 이전 호출 방식 유지;
- 내부 하위 유닛을 캡슐화해 하위 구현 파일을 외부에 숨기기.
구현 방식: 현재 유닛의 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: JavaScript (javascript)
전체 예시
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 안에서 재정의한 이름을 사용합니다.
