TSL语言基础 > TSL语言基础 > 函数定义体和函数 > 形式参数与实际参数

形参与实参的转换    

  •   在TSL语言中,与绝大多数语言不同的是,对形参与实参的支持是通过调用者而不是函数申明来实现的。
      例如:
      RealA:=100;
      RealB:=200;
      Writeln(Abcd(In RealA,Out RealB));
      Writeln("RealA=",RealA,"RealB=",RealB);

      Function abcd(a,b);
      Begin
        A:=a*2;
        B:=b*3;
        Abcd:=A+B;
      End;

      这样运行的结果:
    800
    RealA=100RealB=600

    TSL用in或者const表示送入的为值(形参),而用out或者var表示送入的为引用(实参)

      既然上边说到了TSL语言默认都是实参,为什么还多此一举加入了out,var前缀呢?
      在TSL语言中支持通过{$VarByRef-}关闭允许参数值修改的编译选项,同时也可通过IN、OUT指示来修改默认的参数方式。
    如:
    {$VarByRef-} //取消允许参数修改的设定
    A1:=0;b1:=0;c1:=0;
    Abcd(a1,b1,c1);//此处a1,b1,c1都仍旧为0,因为送入形参
    Abcd(in a1,out b1,out c1);//此处a1为0,b1,c1为1,强制a1为形参,强制b1,c1为实参
    {$VarByRef+}//启用允许参数修改的设定

    Abcd(a1,b1,c1); //此处a1,b1,c1都被改为1
    Abcd(in a1,in b1,c1); //此处a1,b1为0,c1为1,强制a1与b1为形参,c1即默认为实参。

    //模型abcd
    Function abcd(a,b,c);
    Begin
     a:=1;
     b:=2;
     c:=3;
    End;
内容