열거자 연산자

열거자 연산자

열거자(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 반복문
  • 할당 연산자