纯粹作为家庭练习,旨在更好地理解一些语言基础,我试图重新实现这个Ord功能,但我遇到了一个问题.
事实上,现有的Ord函数可以接受的各种不同类型(的参数AnsiChar,Char,WideChar,Enumeration,Integer,Int64),并可以返回整数或Int64的.
我无法弄清楚如何声明同一个函数的多个版本.
应该如何在Delphi中编码?
Joo*_*kka 12
我无法弄清楚如何声明同一个函数的多个版本.
它被称为函数重载.每个版本的输入参数必须不同,返回类型无关紧要.例如:
function Ord(X: Char): Integer; overload;
begin
// Whatever here
end;
function Ord(X: Integer): Integer; overload;
begin
// Something
end;
// etc.
Run Code Online (Sandbox Code Playgroud)
Rob*_*edy 11
Ord不能用Delphi编码.虽然您可以使用该overload指令编写具有相同名称的多个函数,但您无法以Ord这种方式编写函数,因为它适用于任意数量的参数类型而无需多个定义.(无论Ord你写了多少重载,我总能想出一个你的函数不会接受的类型,但编译器会这样做.)
它因为编译魔术而以这种方式工作.编译器知道Ord程序中的所有序数类型,因此它会在线执行函数的操作.其他编译器魔术函数包括Length(魔法,因为它接受任意数组类型),Str(魔术,因为它接受宽度和精度修饰符),和ReadLn(魔法,因为它接受任意数量的参数).