函数或过程可以有缺省参数(default parameters),正如其名称一样,如果函数或过程在调用时没有指定参数,它就会为函数提供一个缺省值。
为了声明一个有缺省值的过程或函数,在参数类型后跟一个等号和缺省值。
下面照惯例,举一个比较完整的例子,来实现一个加法的程序,默认是两个数相加,但是也能实现三个数相加的功能。
1、新建一个Console Application。
2、在代码中输入以下代码,创建一个AddInts函数,用来实现数的相加,如下:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; { AddInts函数中第三个参数I3默认值为0} function AddInts(I1, I2: Integer; I3: Integer = 0): Integer; begin Result := I1 + I2 + I3; end; var I1, I2, I3: Integer; JG: Integer; begin I1 := 123; I2 := 321; I3 := 555; JG := AddInts(I1, I2); { 实现两个数相加 I1 + I2} Writeln(IntToStr(I1) + ' + ' + IntToStr(I2) + ' = ' + IntToStr(JG)); { 输出 I1 + I2 = JG} JG := AddInts(I1, I2, I3);{ 实现三个数相加 I1 + I2 + I3} Writeln(IntToStr(I1) + ' + ' + IntToStr(I2) + ' + ' + IntToStr(I3) + ' = ' + IntToStr(JG)); { 输出 I1 + I2 + I3 = JG} Readln; end.
3、运行结果如下:
4、有缺省值参数的最大好处是,在向一个已存在的过程和函数增加功能时,不必关心向后兼容的问题,就像上面的AddInts函数一样,增加一个具有缺省值的第三个参数,就能把AddInts函数扩展而不必担心它的兼容问题。
Note
任何缺省参数只能放在函数或过程参数表的结尾,下面的代码就是一个无效的函数声明:
procedure MyProcedure(X: Integer; Y: Integer = 10; Z: Integer);编译以上声明,将会报出“Default value required for ‘Z’”错误,如果要想成功编译这个函数声明,就必须把缺省参数移动到参数表的末尾,如下:
procedure MyProcedure(X: Integer; Z: Integer; Y: Integer = 10);
以上代码均在Delphi7中测试通过。