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

VarByRef编译选项    

  •   编译选项。插入{$VarByRef-}可以关闭允许参数值修改的编译选项,系统默认是允许修改的,一旦关闭了编译选项,函数将无法修改传入的参数。如果要重新打开该选项,用{$VarByRef}或者{$VarByRef+}即可。如果我们要临时允许修改,可以使用var前缀。
      编译选项是影响的编译,而非运行。所以在一个函数中打开或者关闭了开关,调用到另外一个函数的时候,该开关是不会生效的。所以每一个函数里都需要使用开关。
      编译选项影响的编译是编译选项后的程序的编译代码,如果一个在函数体内里包括局部函数,编译选项也会影响到下边的局部函数。
      事实上,TSL语言可以利用编译选项修改默认参数传递为形参的。
      上述代码修改成为以下:
      {$VarByRef-}
      RealA:=100;
      RealB:=200;
      Writeln(Abcd(RealA,RealB));
      Writeln("RealA=",RealA,"RealB=",RealB);
      结果为
      800
      RealA=100 RealB=200
      也就是说默认变为形参后,在函数abcd里修改a,b参数都不再会影响RealA,RealB的值了。
      {$VarByRef+}可以重新打开开关。
      注意:编译选项对后边的所有源代码的编译都有效,并不仅仅局限在当前的函数内(而是整个文件或者函数体内有效)。
      为了改变参数传递的方式,用户可以在参数前加in/const,var/out前缀。