zoukankan      html  css  js  c++  java
  • 函数的缺省参数

    函数或过程可以有缺省参数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、运行结果如下:

    0045

    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中测试通过。

  • 相关阅读:
    StringBuffer与StringBuilder的区别比较
    JAVA数据结构--快速排序
    JAVA数据结构--优先队列(堆实现)
    JAVA数据结构--哈希表的实现(分离链接法)
    JAVA数据结构--AVL树的实现
    JAVA数据结构--二叉查找树
    JAVA普通内部类的用法
    关于JAVA泛型中的通配符类型
    JAVA泛型方法与类型限定
    Linux进程间通信的几种方式
  • 原文地址:https://www.cnblogs.com/pchmonster/p/2299985.html
Copyright © 2011-2022 走看看