[Gambas-user] About arrays

Demosthenes Koptsis demosthenesk at ...626...
Tue Nov 23 20:51:03 CET 2010


Thanks Benoît, i understood the array subject well.

But one note.

i cant do in Gambas2-2.21
PUBLIC aInt2[10] AS Integer 
in declaration section of a class

so the syntax
[Static] {Private|Public} EmbeddedArray[A, B] As Type

is it correct, for the Public keyword?


On Tue, 2010-11-23 at 19:13 +0100, Benoît Minisini wrote:
> Hi,
> 
> This is a clarification about Gambas arrays for Demosthene and all who 
> answered him.
> 
> There are two kinds of arrays in Gambas:
> - "Normal" arrays.
> - "Embedded" arrays.
> 
> Fabien used the word "static" arrays for "embedded" arrays because this was 
> the word I used first. Then I changed to "embedded" to avoid any confusion 
> with the "STATIC" keywords, which is not related at all.
> 
> "Normal" arrays are true Gambas objects. They have their own memory 
> allocation, and they are destroyed when they are not referenced anymore.
> 
> To declare a "normal" array, you can do:
> 
> 	(1) Dim NormalArray As Type[]
> 	(2) Dim NormalArray As Type[] = [ ... ]
> 	(3) Dim NormalArray As Type[] = New Type[A, B]
> 	(4) Dim NormalArray As Type[A, B]
> 
> (1) declares an object variable that can receive a reference to a array whose 
> type is "Type[]". "Type" can be a native datatype or a class name. Note that 
> in Gambas 2, "Type" can only be a native datatype.
> 
> (2) declares an object variable, and initializes it with a new array created 
> by the [ ... ] operator.
> 
> (3) declares an object variable, and initializes it with a new array hainvg 
> the specified dimension.
> 
> (4) is a shortcut to the (3) syntax.
> 
> "Embedded" arrays are arrays that are allocated *inside* another object. They 
> don't have a memory allocation on their own, and they are automatically freed 
> with the object including them.
> 
> "Embedded" arrays are always member of a class or a structure only.
> 
> To declare an "embedded" array, you do the following:
> 
> 	[Static] {Private|Public} EmbeddedArray[A, B] As Type
> 
> There, "Type" is the datatype of one element of the array. There is no "[]" 
> after the type, unless you want to store array references inside the array of 
> course.
> 
> "Embedded" arrays can be static or not, public or private.
> 
> "Embedded" arrays are a little bit slower than normal arrays.
> 
> They were created to mimic C arrays (like Gambas structures, that were created 
> to mimic C structures), so that working with extern C functions using arrays 
> and structures is possible. 
> 
> So you should not use them, unless you are working with extern functions.
> 
> I hope Gambas arrays are clearer now!
> 
> Regards,
> 

-- 
Regards,
Demosthenes





More information about the User mailing list