Delphi中的Ord函数实现

时间:2012-03-27 10:04:28

标签: delphi

纯粹作为家庭练习,旨在更好地理解一些语言基础知识,我试图重新实现Ord功能,但我遇到了一个问题。

实际上,现有的Ord函数可以接受各种不同类型的参数(AnsiCharCharWideCharEnumeration,{{ 1}},Integer)并且可以返回Integer或Int64。

我无法弄清楚如何声明同一个函数的多个版本。

如何在Delphi中编码?

2 个答案:

答案 0 :(得分:12)

  

我无法弄清楚如何声明同一个函数的多个版本。

它被称为function overloading。每个版本的输入参数必须不同,返回类型无关紧要。例如:

function Ord(X: Char): Integer; overload;
begin
  // Whatever here
end;

function Ord(X: Integer): Integer; overload;
begin
  // Something
end;

// etc.

答案 1 :(得分:11)

Ord无法在Delphi中编码。虽然您可以使用the overload directive编写具有相同名称的多个函数,但您无法以这种方式编写Ord函数,因为它适用于任意数量的参数类型而无需多个定义。 (无论你编写了多少Ord个重载,我总是可以提出一个类型,你的函数不会接受,但编译器会这样做。)

由于编译魔术,它的工作方式正常。编译器知道Ord以及程序中的所有序数类型,因此它会在线执行函数的操作。其他编译器魔术函数包括Length(魔法,因为它接受任意数组类型),Str(魔术,因为它接受宽度和精度修饰符),以及ReadLn(魔术,因为它接受任意参数数量。)