기본 내장 함수 사용하기 — 제네릭에서 Default로 변수 초기화
기본 내장 함수 사용하기 — 제네릭에서 Default로 변수 초기화
제네릭 루틴을 작성하다 보면 선언 시점에 타입을 모르는 변수를 초기화해야 할 때가 있어요. 이때 Default 내장 함수(4.5절)가 유용하게 쓰여요.
본문
다음과 같은 제네릭 선언이 있다고 해볼게요.
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 같은 값)으로 안전하게 초기화돼요. 특수화된 타입에 맞는 기본값이 자동으로 채워지는 거죠.
더 알아보기
- 제네릭 특수화 결과의 타입 호환성은 Type compatibility에서 다뤄요
- 제네릭에서 타입 제약의 역할은 A word about scope를 참고하세요