열거자 연산자
열거자 연산자
열거자(enumerator) 연산자를 이용하면 어떤 타입에든 for...in 반복에 쓸 수 있는 열거자를 정의할 수 있어요. 단 Delphi 구문 모드에서는 인식되지 않는 점을 주의해야 합니다.
출처: 문서
본문
열거자 연산자는 어떤 타입에든 열거자를 정의하기 위해 사용할 수 있어요. 이 연산자는 IEnumerator 인터페이스와 같은 시그니처를 가진 클래스·객체·확장 레코드(extended record)를 반환해야 합니다. 이 연산자는 Delphi 구문 모드에서는 컴파일러가 인식하지 못한다는 점을 주의하세요.
다음 코드는 Integer 타입에 대한 열거자를 정의합니다.
Type
TEvenEnumerator = Class
FCurrent : Integer;
FMax : Integer;
Function MoveNext : Boolean;
Property Current : Integer Read FCurrent;
end;
Function TEvenEnumerator.MoveNext : Boolean;
begin
FCurrent:=FCurrent+2;
Result:=FCurrent<=FMax;
end;
operator enumerator(i : integer) : TEvenEnumerator;
begin
Result:=TEvenEnumerator.Create;
Result.FMax:=i;
end;
var
I : Integer;
m : Integer = 4;
begin
For I in M do
Writeln(i);
end.
이 반복문은 열거 가능한 수보다 작거나 같은 0이 아닌 모든 짝수를 출력해요. (예시의 경우 2와 4) 열거자와 열거자 연산자에 대한 더 자세한 내용은 Reference Manual 13.2.5절(for...in)에서 확인할 수 있어요.
더 알아보기
- Free Pascal Reference Manual 15장 연산자 오버로딩 전체 보기
- Free Pascal Reference Manual 13.2.5절
for...in반복문 - 할당 연산자