调用具有其他值作为参数的函数时,是否会覆盖函数的默认参数?

时间:2015-05-01 11:28:46

标签: delphi parameters

我在Delphi中创建一个需要特定值作为参数的函数,除非在调用函数时设置它。虽然在这种情况下会覆盖默认参数吗?

示例:

function ExampleFunction(b = 3, a){
  b*a = c
}
ExampleFunction(15,2)

默认参数(3)是否会被给定参数(15)替换?

1 个答案:

答案 0 :(得分:6)

您的代码无法编译。它的语法无效。看起来好像你已经用Pascal和C#的混合编写了代码。我建议你解决这个问题。

除此之外,默认参数必须出现在列表的最后。原因是默认参数允许您在调用函数时省略参数。执行此操作时,编译器将缺少的参数替换为默认值。因为参数是位置参数,所以不能省略参数,但是然后传递列表中显示的其他参数。

documentation,我恳请你再读一遍,说:

  

具有默认值的参数必须出现在参数列表的末尾。也就是说,第一个声明的默认值之后的所有参数也必须具有默认值。

现在回答这个问题。如果不省略参数,即如果提供参数,则使用您提供的值。

让我们使用一个实际编译的例子:

function Test(a: Integer; b: Integer = 42): Integer;
begin
  Result := a * b;
end;

然后

Test(2) = 84 // parameter b is omitted, default value passed

Test(4, 3) = 12