文件名称:重载例程-京东应用架构设计
文件大小:7.56MB
文件格式:PDF
更新时间:2024-06-30 04:57:16
Delphi 2010 语法
5.6 重载例程 假设我们需要编写函数来查找计算机上的某个文件。为了达到这个目地,我们可以针对 文件每条信息定义一个 FindByXXX形式的例程,然后使用时分别调用。如利用文件的名称 来查找,可以定义函数: procedure FindByName(name:string); 同样,若使用文件的大小来查找文件则可以定义如下过程: procedure FindBySize(size:integer); 通过文件的创建日期来查找: procedure FindByDate(date:TDate); „„ 这样当然可以达到目的。但用户在查找文件时,对于每个信息均必须知道对应的查找例程 的名称,否则可出现诸如将文件大小传递入 FindByName来查找文件的之类错误。 我们可以同时定义多个名为 Find例程,每个例程接受不同的参数,使用时系统根据参 数自动选择合适的例程。如定义以下例程: procedure Find(name:string);overload; procedure Find(size:integer);overload; procedure Find(time:TDate);overload; „„ 当我们以文件名作为参数调用 Find: Find('d:\file\dest.txt'); 系统会根据参数的类型自动判断出此处的 Find是指 procedure Find(name:string)而非其 它的 Find例程。 在此例子中,我们实际已经重载了 Find例程。“重载”中的“重”并非“重新”而是 “多重”之意。所谓“重载”是指同一个有效范围内某个例程名称同时对应多个不同的例 程的定义,这相当于同一有效域中的多个不同的例程恰巧拥有了相同的名称。 不同于普通变量,系统在识别一个函数或过程时并非仅仅根据其名称,而是根据“名 称+参数个数+每个参数的数据类型”的组合来识别一个例程,此组合称为例程的特征集。 当例程的名称相同时其特征集不一定相同,所以同一个例程名称可以代表不同的例程。注 意:同一名称对应的多个例程必须全是过程或全是函数。 声明一个重载例程只需在声明时加上限定符 overload(定义例程时可省略限定符)。假 设我们需要声明若干个 Find例程,则每个 Find例程(包括第一个)后必须加上 overload以 标识此例程是一个重载的例程。注意:例程的特征集不包括参数的传递方式,即以下的例