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

joo*_*ost -1 delphi parameters

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

例:

function ExampleFunction(b = 3, a){
  b*a = c
}
Run Code Online (Sandbox Code Playgroud)
ExampleFunction(15,2)
Run Code Online (Sandbox Code Playgroud)

是否将默认参数(3)替换为给定参数(15)?

Dav*_*nan 6

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

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

我敦促你再读一遍的文件说:

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

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

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

function Test(a: Integer; b: Integer = 42): Integer;
begin
  Result := a * b;
end;
Run Code Online (Sandbox Code Playgroud)

然后

Test(2) = 84 // parameter b is omitted, default value passed
Run Code Online (Sandbox Code Playgroud)

Test(4, 3) = 12
Run Code Online (Sandbox Code Playgroud)