기본 내장 함수 사용하기 — 제네릭에서 Default로 변수 초기화

기본 내장 함수 사용하기 — 제네릭에서 Default로 변수 초기화

제네릭 루틴을 작성하다 보면 선언 시점에 타입을 모르는 변수를 초기화해야 할 때가 있어요. 이때 Default 내장 함수(4.5절)가 유용하게 쓰여요.

출처: Using the default intrinsic — Free Pascal Reference

본문

다음과 같은 제네릭 선언이 있다고 해볼게요.

type
  generic TTest<T> = class
    procedure Test;
  end;

그러면 아래 코드는 특수화 과정에서 변수 myt를 올바르게 초기화해요.

procedure TTest.Test;
var
  myt: T;
begin
  // will have the correct Default if class is specialized
  myt := Default(T);
end;

포인트는 이거예요. T가 어떤 타입으로 특수화될지 모르는 상태에서도 Default(T)를 쓰면 그 타입의 기본값(숫자면 0, 문자열이면 빈 문자열, 클래스면 nil 같은 값)으로 안전하게 초기화돼요. 특수화된 타입에 맞는 기본값이 자동으로 채워지는 거죠.

더 알아보기