Am 24.05.2018 um 17:27 schrieb Ryan Joseph:

On May 20, 2018, at 7:23 PM, Sven Barth via fpc-pascal 
<fpc-pascal@lists.freepascal.org> wrote:

The compiler now implements a "+" operator for arrays which is the same as if 
Concat() would be called on the arrays.

I haven’t built it yet but I’m curious, does += now push an element to the 
array or does this just work to concat 2 arrays? I would expect:

a: array of string = ();
a += ‘foo’;


to push a single string on the array.

This is currently not supported. And to avoid backwards compatibility problems with existing operator overloads you'd probably need to convert it to a dynamic array first:

=== code begin ===

a += ['foo'];

=== code end ===

Also can you use type helpers with dynamic arrays yet? Thinking about how to 
extend them if possible.

Type helpers for dynamic arrays are already possible in 3.0, however they must be named array types (both for the declaration of the helper as well as the array) and they must be the same type (so equal type declarations in different units do not work).

=== code begin ===

{$modeswitch typehelpers}

type
  TLongIntArray = array of LongInt;

  TLongIntArrayHelper = type helper for TLongIntArray
    procedure Test;
  end;

procedure TLongIntArrayHelper.Test;
begin
  Writeln(Length(Self));
end;

var
  lia: TLongIntArray = (1, 2, 3);
begin
  lia.Test;
end.

=== code end ===

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to