구 유닛 노출하기

새 유닛으로 다른 유닛의 식별자를 외부에 노출하기

다른 유닛에 있는 식별자를 현재 새 유닛에서 다시 내보내 외부에 공개해야 하는 경우가 있습니다. 최종 효과: 이 새 유닛만 참조하면 해당 식별자를 직접 사용할 수 있습니다.

적용 시나리오:

  1. 구 버전 유닛 호환성을 지원하고 이전 호출 방식 유지;
  2. 내부 하위 유닛을 캡슐화해 하위 구현 파일을 외부에 숨기기.

구현 방식: 현재 유닛의 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 안에서 재정의한 이름을 사용합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다