[fpc-devel] C-block reference syntax (blocker for 3.2)
Sven Barth
pascaldragon at googlemail.com
Thu Dec 12 07:13:53 CET 2019
Am 11.12.2019 um 23:40 schrieb Ryan Joseph via fpc-devel:
>
>> On Dec 11, 2019, at 4:16 PM, Michael Van Canneyt <michael at freepascal.org> wrote:
>>
>> It does gain something: it tells you it is NOT a varargs, but an array of
>> const, which is a different beast altogether.
> But it's a syntax equivalent for "a variable amount of arguments", i.e. varargs. ;) I guess others don't see it this way however.
Do you consider this as a variable "amount of arguments" as well?
=== code begin ===
function CalcSum(aArg: array of Integer): Integer;
var
i: Integer;
begin
Result := 0;
for i in aArg do
Result := Result + i;
end;
var
a: array of Integer;
begin
Writeln(CalcSum([21, 54, 67, 89]));
a := [94, 28, 85, 32];
Writeln(CalcSum(a));
end.
=== code end ===
This uses the same mechanism, namely "open array" as "array of const" is
in reality an "array of TVarRec" where the compiler automatically
converts the incoming variables into a TVarRec.
In the Pascal world this is considered *one* argument. In contrast
Writeln() supports a variable amount of arguments.
Regards,
Sven
More information about the fpc-devel
mailing list