[fpc-devel] Feature request/discussion - SetLengthNoInit
J. Gareth Moreton
gareth at moreton-family.com
Tue Sep 15 00:49:26 CEST 2020
On 14/09/2020 19:41, Michael Van Canneyt via fpc-devel wrote:
> Better add an additional (optional) parameter SkipInit : Boolean = False;
That won't work because constructs such as "var Data: array of array of
Byte; SetLength(Data, 25, 25);" are allowed. Eevn if it's technically
an intrinsic and the compiler can have customised handling, I think it
will cause too much confusion to have an optional Boolean parameter like
that. Also, it might cause unnecessary additional overhead since it
wastes a register to pass the Boolean value that, in most cases, is
equal to False (implicitly or otherwise).
Finally, the fact it's a parameter implies that you can use a
(non-deterministic) variable as an actual parameter, which is logically
something that should never have a practical application in this case;
i.e. why should initialising the data to zeroes be undecided at
run-time? Surely you, the programmer, know what you're going to do with
that data block.
I understand there's a risk of it breaking existing code should a unit
have a subroutine with the name "SetLengthNoInit", although long names
with multiple words reduces this risk, and if there is a clash, doesn't
the compiler prioritise the subroutine defined in the unit? Should you
want to use the internal "SetLengthNoInit" in this case, you will need
to call "System.SetLengthNoInit", right?
Gareth aka. Kit
This email has been checked for viruses by Avast antivirus software.
More information about the fpc-devel