in 연산자

in 연산자

in 연산자도 Free Pascal 2.6 버전부터 오버로드할 수 있어요. 집합에 속한 원소인지 검사하는 기본 용도 외에, 자신의 타입에 맞는 포함 여부 판단을 정의할 수 있습니다.

출처: 문서

본문

Free Pascal 2.6 버전부터 in 연산자를 오버로드할 수 있어요. in 연산자의 첫 번째 인자는 in 키워드 왼쪽에 오는 피연산자여야 합니다.

다음 코드는 in 연산자를 레코드용으로 오버로드해요.

{$mode objfpc}{$H+}
type
  TMyRec = record A: Integer end;
operator in (const A: Integer; const B: TMyRec): boolean;
begin
  Result := A = B.A;
end;
var
  R: TMyRec;
begin
  R.A := 10;
  Writeln(1 in R); // false
  Writeln(10 in R); // true
end.

in 연산자는 서수(ordinal) 타입이 아닌 다른 타입에도 오버로드할 수 있어요. 다음 예시처럼요.

{$mode objfpc}{$H+}
type
  TMyRec = record A: Integer end;
operator in (const A: TMyRec; const B: TMyRec): boolean;
begin
  Result := A.A = B.A;
end;
var
  S,R: TMyRec;
begin
  R.A := 10;
  S.A:=1;
  Writeln(S in R); // false
  Writeln(R in R); // true
end.

더 알아보기