5.1.5 开放式数组形参
对于数组的使用有一个非常特殊的场景,即用于向函数传递一个灵活的参数列表。除了直接传递数组外,本节和下一节还将解释两种特殊的语法约定。在上一段代码中的 Format 函数就是一个使用了这种约定的函数,它的第二个参数接受一个就地定义的数组值。
与 C 语言(以及其他一些基于 C 语法的语言)不同,在传统的 Pascal 语言中,函数或过程总是有固定数量的参数。然而,在 Object Pascal 中,有一种方法可以使用就地定义的数组向例程传递不同数量的参数,这种技术被称为开放数组参数。
注解:从历史上看,开放数组参数早于动态数组,但如今这两种功能的工作方式非常相似,几乎无法区分。这就是为什么我在讨论动态数组后才介绍开放数组参数。
定义开放式数组形参与定义类型化动态数组类型的基本相同,但以const指示符作为前缀。 这意味着您可以指定参数的类型,但不需要指出数组要有多少个该类型的元素。 下面是这样一个定义的例子,摘自OpenArray的示例:
function Sum(const A: array of Integer): Integer;
var
I: Integer;
begin
Result := 0;
for I := Low(A) to High(A) do
Result := Result + A[I];
end;
您可以通过传递一个整数常量表达式的数组(其中也可以包含变量,作为用于计算表达式各部分的值)来调用该函数: