15.6 Оператор In

На верх  Назад  Вперёд

Начиная с версии 2.6 Free Pascal, оператор 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 может быть перегружен и для других (не порядковых) типов, как показано в следующем примере:

{$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.