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.