是否可以为枚举类型重载运算符?那些。我们有例如:
Type
TAngle = (a0, a90, a180, a270);
Var
AngleA, AngleB, AngleC: TAngle;
AngleA := a90;
AngleB := a180;
AngleC := AngleA + AngleB; //a270
AngleC := a270 + AngleB; //a90
AngleC := AngleB + a180; //a0
理论上,加法运算符会被重载,但这仅适用于记录,据我了解?是否可以通过 Implicit 写入隐式导致这种枚举类型?但它仍然是一种新类型。
一般来说,逻辑是这样的,而我是通过一个函数来完成的:
Result := TAngle((Ord(AngleA) + Ord(AngleB)) Mod 4)
正如@zed 的回答已经说过的那样,重载仅可用于记录。因此,如果需要,您可以添加适当的结构并使用它。
重载加法,对于初学者来说,隐式转换
最后,值的操作\u200b\u200b会变成你想要的方式
你不能那样做。
在 Delphi 的桌面版本中,运算符重载仅适用于条目:运算符重载 (Delphi)。
对于移动版本(使用 ARC),类也可以重载:Delphi 中的类运算符