Variable Declaration
[ STATIC ] { PUBLIC | PRIVATE } Identifier AS Datatype [ = Expression ]
This declares a
class global
variable.
Access
This
variable is accessible everywhere in the
class it is declared.
- If the PUBLIC keyword is specified, it is also accessible to the other classes having a reference to an object of this class.
- If the STATIC keyword is specified, the same variable will be shared with every object of this class.
Example
STATIC PUBLIC GridX AS Integer
STATIC PRIVATE bGrid AS Boolean
PUBLIC Name AS String
PRIVATE Control AS Object
Initialization
The
variable can be initialized with any
Expression.
Example
PRIVATE Languages AS String[] = [ "fr", "it", "es", "de", "ja" ]
PRIVATE DefaultLanguage AS String = Languages[1]
Alternatively, you can initialize the variable with a newly instanciated
object.
[ STATIC ] { PUBLIC | PRIVATE } Identifier AS NEW Class ( Arguments ... )
STATIC PRIVATE Tasks AS NEW List
PRIVATE MyCollection AS NEW Collection(gb.Text)
Or you can initialize the variable with a native
dynamic array.
[ STATIC ] { PUBLIC | PRIVATE } Identifier AS NEW Datatype [ Array dimensions ... ]
Note that you can use any expression for specifying array dimensions.
PUBLIC CONST WORD_MAX AS Integer = 12
PRIVATE Words AS NEW String[WORD_MAX * 2]
PUBLIC Matrix AS NEW Float[3, 3]
Variables Alignment
Objects are never packed, i.e. variables are aligned to a memory
address that is a multiple of its memory length:
- A Boolean or a Byte can be stored at any address.
- A Short is stored at an even address.
- An Integer is stored at an address that is a multiple of four.
- ...and so on.
As the declaration order is respected, so you may have holes in your
object.
For example, if you declare a Byte
variable and just after an Integer variable, you will have a three bytes hole.
Array declaration
They are two sorts of arrays in
Gambas: "normal" arrays and "embedded" arrays. They are declared with specific syntaxs.
See
Array Declaration for more information.