编译选项。插入{$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前缀。