[Gambas-user] Array question
Benoit Minisini
gambas at ...1...
Tue Oct 12 13:41:17 CEST 2004
On Monday 11 October 2004 14:15, Paolo Saudin wrote:
> ron wrote:
> >On Saturday 09 October 2004 11:11, Paolo Saudin wrote:
> >>Hi all,
> >>I need to use a multidimensional array ( x1[0][0] , x1[0][1] , x1[1][0]
> >>, x1[1][1] ... ) and at a certain time,
> >>I want to copy it in a bakup array in order to work with the new one
> >>without loose the original data.
> >>Here's my problem : when I copy ( x2=x1.copy() ) a single dimension
> >>array all it works as expected,
> >>but as soon as I use a multidimensional one, the original is treated as
> >>a "referenced" copy and get modified as well.
> >>Attached there is an example to demonstrate it clearer :-). Is there
> >>another way to deep copy two arrays?
> >>
> >>Many thanks,
> >>Paolo
> >
> >the array.copy is not an new array with a copy of the content.
> >It is the same but with a different name.
> >
> >arrB = arrA.copy()
> >arrB is the same as aarA only the name differs.
> >
> >The exact name should be .Clone() I think.
> >or arrB.Alias( arrA ) or arrB.Link(arrA)
> >
> >A copy is an new instance of it with the content of the source.
>
> I tried but the only methods available for a Variant[] are _Add Clear
> Copy Insert Pop Push Remove Resize Reverse Sort
> _and so I couldn't manage to really get a copy of the array. In the
> Gambas-wiki, the copy() function is said to return a true copy of it,
> if I understand it correctly ?. FUNCTION Copy ( ) AS Variant[] Returns a
> deep copy of the array.
> Paolo
>
You are right and Ron is wrong. Copy() returns a deep copy of the array.
But be careful: if there is an object reference in the array, then only the
reference is copied. The object is not cloned (there is no clone support in
Gambas object model).
Regards,
--
Benoit Minisini
mailto:gambas at ...1...
More information about the User
mailing list