-
-
Save superswanman/886ed984d230ac1b42dd89ed42ab2214 to your computer and use it in GitHub Desktop.
program Project1; | |
{$APPTYPE CONSOLE} | |
uses | |
System.SysUtils, System.Classes, System.Types, Vcl.Dialogs; | |
type | |
TStringListEx = class(TStringList) | |
public | |
// class operator In(const A: string; B: TStringListEx): Boolean; | |
class function &&op_In(const A: string; B: TStringListEx): Boolean; static; | |
end; | |
TPointHelper = record helper for TPoint // Possible in class helper! | |
public | |
// class operator Equal(const A: TPoint; const B: string) : Boolean; | |
class function &&op_Equality(const A: TPoint; const B: string): Boolean; static; | |
end; | |
class function TStringListEx.&&op_In(const A: string; B: TStringListEx): Boolean; | |
begin | |
Result := B.IndexOf(A) >= 0; | |
end; | |
class function TPointHelper.&&op_Equality(const A: TPoint; const B: string): Boolean; | |
begin | |
Result := Format('%d,%d', [A.X, A.Y]) = B; | |
end; | |
var | |
sl: TStringListEx; | |
pt: TPoint; | |
ret: Boolean; | |
begin | |
sl := TStringListEx.Create; | |
sl.Add('AAA'); | |
sl.Add('BBB'); | |
ret := 'AAA' in sl; | |
Writeln(BoolToStr(ret, True)); // -> 'True' | |
pt := Point(123, 456); | |
ret := pt = '123,456'; | |
Writeln(BoolToStr(ret, True)); // -> 'True' | |
Readln; | |
end. |
list of class operators:
Implicit &&op_Implicit
Explicit &&op_Explicit
Negative &&op_UnaryNegation
Positive &&op_UnaryPlus
Inc &&op_Increment
Dec &&op_Decrement
LogicalNot &&op_LogicalNot
Trunc &&op_Trunc
Round &&op_Round
In &&op_In
Equal &&op_Equality
NotEqual &&op_Inequality
GreaterThan &&op_GreaterThan
GreaterThanOrEqual &&op_GreaterThanOrEqual
LessThan &&op_LessThan
LessThanOrEqual &&op_LessThanOrEqual
Add &&op_Addition
Subtract &&op_Subtraction
Multiply &&op_Multiply
Divide &&op_Division
IntDivide &&op_IntDivide
Modulus &&op_Modulus
LeftShift &&op_LeftShift
RightShift &&op_RightShift
LogicalAnd &&op_LogicalAnd
LogicalOr &&op_LogicalOr
LogicalXor &&op_ExclusiveOr
BitwiseAnd &&op_BitwiseAnd
BitwiseOr &&op_BitwiseOr
BitwiseXor &&op_BitwiseXOR
Include &&op_Include
Exclude &&op_Exclude
Is it possible to overload for interface types?
Is it possible to overload for interface types?
No
Hi not work for records...