在我的程序中,我需要经常在代码中获得百分比。现在我有这个功能来解决它function percent(whole, part: double):double; begin percent:= whole * part / 100; end;我想知道有什么方法可以创建新的运算符,所以我只能写类似:a:=100%20 的内容,并获得想要的结果。它也应该能够用作:c:=b/a;或:c:=c/a; 最佳答案 您可以在 pascal 中定义运算符,但仅限于记录类型。它被称为 运算符重载 并且您可以阅读 here 。您所做的是定义自己的记录类型数据,然后重载 = % 等标准运算符以执行您希望它们执行的操作。这是一个简单的例子:InterfaceType TMyFloatType = record value: Extended; class operator Implicit(n: Extended): TMyFloatType; class operator Explicit(n: Extended): TMyFloatType; class operator Equal(a, b: TMyFloatType): Boolean; class operator GreaterThan(a, b: TMyFloatType): Boolean; end;Implementationclass operator TMyFloatType.Implicit(n: Extended): TMyFloatType;begin result.value := n;end;class operator TMyFloatType.Explicit(n: Extended): TMyFloatType;begin result.value := n;end;class operator TMyFloatType.Equal(a, b: TMyFloatType): Boolean;begin result := (a.value = b.value);end;class operator TMyFloatType.GreaterThan(a, b: TMyFloatType): Boolean;begin result := (a.value > b.value);end;然后您可以像常规变量一样使用它:procedure Test;var a, b: TMyFloatType;Begin // first assign some values to a and b a := 3.14; b := 2.7; if a > b then Begin // Do something End;End;您可以重载的运算符也包括数学运算符,例如 + - / * mod div 等。现在,话虽如此,我确实相信实际实现它来避免一个简单的功能并不是很方便,但是,嘿,您的选择。这里的要点是您可以让运算符(operator)过载来进行您的出价。我相信要进行像 percentage := a % 20; 这样的计算,您需要重载 Modulus 运算符。关于pascal - 如何在pascal中定义运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45297158/
10-11 03:47