函数的缺省参数
函數或過程可以有缺省參數(default parameters),正如其名稱一樣,如果函數或過程在調用時沒有指定參數,它就會為函數提供一個缺省值。
為了聲明一個有缺省值的過程或函數,在參數類型后跟一個等號和缺省值。
下面照慣例,舉一個比較完整的例子,來實現一個加法的程序,默認是兩個數相加,但是也能實現三個數相加的功能。
1、新建一個Console Application。
2、在代碼中輸入以下代碼,創建一個AddInts函數,用來實現數的相加,如下:
program Project1; {$APPTYPE CONSOLE} usesSysUtils; { AddInts函數中第三個參數I3默認值為0} function AddInts(I1, I2: Integer; I3: Integer = 0): Integer; beginResult := I1 + I2 + I3; end; varI1, I2, I3: Integer;JG: Integer; beginI1 := 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中測試通過。
總結
- 上一篇: sun m5000 snapshot
- 下一篇: 《***》读后